#php #mysqli
#php #mysqli
Вопрос:
Я ищу способ получить полную строку из подготовленной инструкции mysqli, не зная количества столбцов
Это то, что я успешно протестировал
if ($stmt = $con->prepare("SELECT user_id FROM users where user_id = ?")) {
$stmt->bind_param('s', '32');
$stmt->execute();
$stmt->bind_result($user_id);
while ($stmt->fetch()) {
printf ("%s n", $user_id);
}
$stmt->close();
}
Это сработало нормально, но что делать, если мне нужны все столбцы, и мой запрос будет *
if ($stmt = $con->prepare("SELECT * FROM users where user_id = ?")) {
$stmt->bind_param('s', '32');
$stmt->execute();
$stmt->close();
}
Как использовать подготовленную инструкцию mysqli для SELECT *
?
Комментарии:
1. Используйте PDO вместо mysqli. С PDO у вас никогда не возникнет подобных проблем .
2. есть ли какой-либо способ в mysqli
3. Да, как вы, возможно, уже узнали, если щелкнуть ссылку, которую я опубликовал
4. не могли бы вы привести какой-нибудь рабочий пример
5. я просто хочу избавиться от
bind_result()
, потому что количество столбцов неизвестно
Ответ №1:
Если вы извлекаете неизвестное количество столбцов из результирующего набора, вы не можете использовать bind_result()
. Эта функция полезна для одного столбца или если у вас небольшое фиксированное количество столбцов.
Чтобы получить результат от SELECT *
использования get_result()
, который вернет mysqli_result
объект, который вы можете перебирать или извлекать одну строку.
$user_id = 32;
$stmt = $con->prepare("SELECT * FROM users where user_id = ?");
$stmt->bind_param('s', $value);
$stmt->execute();
$result = $stmt->get_result();
foreach($result as $row) {
printf ("%s n", $row['username']);
}
Эта функция недоступна в некоторых очень старых версиях PHP или в тех, которые скомпилированы для клиента libmysql