Как сохранить один столбец одной строки из подготовленного mysqli оператора в переменной PHP?
Я очень новичок в PHP и MySQL, и я ищу решение для хранения одного значения строки базы данных в переменной с помощью подготовленного оператора.
Прямо сейчас это подготовленное заявление и исполнение:
$emailsql = $conn->prepare("SELECT email FROM User WHERE email = ? limit 1;");
$emailsql->bind_param('s', $email);
$emailsql->execute();
Я попробовал get_result()
, fetch()
, fetch_object()
и у меня нет идей и результатов поиска google.





Ответы - Как сохранить один столбец одной строки из подготовленного mysqli оператора в переменной PHP? / How to store a single column of a single row out of a MySQLi prepared statement in a PHP variable?

09.05.2016 04:26:08
Вам нужно добавить в свой код привязку результата к определенной переменной
$emailsql->bind_result($emailResult);
И ты принесешь его :
while($emailsql->fetch()){
printf ($emailResult);
}
Так что это должно быть оно:
$emailsql = $conn->prepare("SELECT email FROM User WHERE email = ? limit 1;");
$emailsql->bind_param('s', $email);
$emailsql->execute();
$emailsql->bind_result($emailResult);
while($emailsql->fetch()){
printf ($emailResult);
}
В случае, если вам нужна переменная вне цикла, я бы взял этот подход:
$theEmail;
$emailsql = $conn->prepare("SELECT email FROM User WHERE email = ? limit 1;");
$emailsql->bind_param('s', $email);
$emailsql->execute();
$emailsql->bind_result($emailResult);
while($emailsql->fetch()){
$theEmail=$emailResult;
}
Обратите внимание, что вам понадобится массив, чтобы запросить более одного сообщения электронной почты.
Другой более чистый подход ,как @ YourCommonSense предложил бы избежать цикла, Как так:
$theEmail;
$emailsql = $conn->prepare("SELECT email FROM User WHERE email = ? limit 1;");
$emailsql->bind_param('s', $email);
$emailsql->execute();
$emailsql->bind_result($emailResult);
$emailsql->fetch();
printf($emailResult);














09.05.2016 04:37:41
Есть два способа. Либо этот способ привязки-результата, объясненный в другом ответе, либо обычный метод извлечения регулярного массива
$stmt = $conn->prepare("SELECT 1 FROM User WHERE email = ?;");
$stmt->bind_param('s', $email);
$stmt->execute();
$res = $stmt->get_result();
$row = $res->fetch_row();
$value = $row ? $row[0] : null;
Учитывая все это, вы можете рассмотреть, насколько плохо удобство использования mysqli, по сравнению с PDO:
$stmt = $conn->prepare("SELECT 1 FROM User WHERE email = ? limit 1;");
$stmt->execute([$email]);
$value = $stmt->fetchColumn();