Различия производительности и безопасности между mysqli get_result и bind_result?

Какой смысл разработчику PHP создать функцию bind_result, так как кажется, что get_result тоже работает.

if($stmt=$mysqli->prepare("SELECT member_ID FROM members where hair=? and hand=?")){ if($stmt->bind_param('ss',$hair,$hand)){ if($stmt->execute){ $result=$stmt->get_result(); while($line=$result->fetch_assoc()){ echo $line['member_ID']; } // ------------ versus ------------------- // $stmt->store_result(); // $stmt->bind_result($member_ID); // while($stmt->fetch()){ // echo $member_ID; // } } } } 

Кажется, что (я предполагаю) разработчик php предпочитают $stmt->fetch() поскольку эта функция вышла раньше, но почему $stmt->fetch() ? Похоже, что это не причина разницы имен переменных между $row['member_ID'] и $member_ID .

Некоторым программистам нравится присваивать каждому элементу ассоциативного массива регулярную переменную, поэтому они могут использовать их менее подробно. Использование bind_result делает это автоматически для вас, и вам не нужно повторять его каждый раз через цикл выборки.

Это просто стилистический выбор. IMHO, основная проблема с bind_result заключается в том, что вы должны следить за тем, чтобы порядок аргументов синхронизировался с select списком. Это также верно для bind_param (именно поэтому PDO позволяет :name параметры :name , чтобы решить эту проблему), но преимущества перевешивают его.

Нет риска для безопасности при возврате строк из базы данных (с правильной проверкой в ​​зависимости от того, что вы возвращаете),

get_result() упрощает возврат предварительно созданного массива из инструкции,

bind_result() упрощает работу со значениями, с которыми вы хотите работать.

По сути, все зависит от того, с чем разработчик предпочитает работать. Переменные или поиск массива. они выполняют одну и ту же задачу, просто используя bind_result удаляет строку кода для извлечения типа массива.