Как сохранить один столбец одной строки из подготовленного mysqli оператора в переменной PHP?

Как сохранить один столбец одной строки из подготовленного mysqli оператора в переменной PHP?

09.05.2016 04:14:04 Просмотров 41 Источник

Я очень новичок в 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.

У вопроса есть решение - Посмотреть?

https://stackoverflow.com/questions/37116740/how-to-store-a-single-column-of-a-single-row-out-of-a-mysqli-prepared-statement#comment61774575_37116740
что произойдет, если вы var_dump () все, что выходит из execute ()?
https://stackoverflow.com/questions/37116740/how-to-store-a-single-column-of-a-single-row-out-of-a-mysqli-prepared-statement#comment61774619_37116740
чтобы "хранить " или"показывать"? Я не понимаю вопроса здесь, или это только я?
https://stackoverflow.com/questions/37116740/how-to-store-a-single-column-of-a-single-row-out-of-a-mysqli-prepared-statement#comment61774820_37116740
Тогда начните с руководства php.net/manual/en/mysqli.quickstart.prepared-statements.php и не отклоняйтесь от него.

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

Является ответом!
Asur

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);
https://stackoverflow.com/questions/37116740/how-to-store-a-single-column-of-a-single-row-out-of-a-mysqli-prepared-statement/37116998#comment61775076_37116998
Почему это время?
https://stackoverflow.com/questions/37116740/how-to-store-a-single-column-of-a-single-row-out-of-a-mysqli-prepared-statement/37116998#comment61775166_37116998
Вы делаете $emailsql->bind_result($id_comentario);но печать $email; это ничего не сделает.
https://stackoverflow.com/questions/37116740/how-to-store-a-single-column-of-a-single-row-out-of-a-mysqli-prepared-statement/37116998#comment61775217_37116998
@YourCommonSense я использую его совсем как стандарт, потому что он подходит почти для любой ситуации.
https://stackoverflow.com/questions/37116740/how-to-store-a-single-column-of-a-single-row-out-of-a-mysqli-prepared-statement/37116998#comment61775316_37116998
Что делать, если я хочу использовать эту переменную вне цикла (и я, по-видимому, буду)?
https://stackoverflow.com/questions/37116740/how-to-store-a-single-column-of-a-single-row-out-of-a-mysqli-prepared-statement/37116998#comment61775416_37116998
Я бы объявил переменную вне цикла, а затем назначил переменную запроса этой общей переменной внутри while. Я буду редактировать с примером.
https://stackoverflow.com/questions/37116740/how-to-store-a-single-column-of-a-single-row-out-of-a-mysqli-prepared-statement/37116998#comment61775581_37116998
Все эти хлопоты только для того, чтобы следовать "стандарту"?
https://stackoverflow.com/questions/37116740/how-to-store-a-single-column-of-a-single-row-out-of-a-mysqli-prepared-statement/37116998#comment61775631_37116998
@CCMFabian нет проблем, рад, что вы его решили ;)
https://stackoverflow.com/questions/37116740/how-to-store-a-single-column-of-a-single-row-out-of-a-mysqli-prepared-statement/37116998#comment61775678_37116998
А? Что делают подготовленные заявления с вашими петлями? И как это задание вообще поможет?
https://stackoverflow.com/questions/37116740/how-to-store-a-single-column-of-a-single-row-out-of-a-mysqli-prepared-statement/37116998#comment61775747_37116998
@YourCommonSense я думаю, что я неправильно понял ваш комментарий, что вы подразумеваете под стандартом? кстати, я согласен с вашим ответом, я думаю, что PDO намного чище, но я не понимаю смысла подхода флага.
https://stackoverflow.com/questions/37116740/how-to-store-a-single-column-of-a-single-row-out-of-a-mysqli-prepared-statement/37116998#comment61775848_37116998
Но я не согласен с вашим ответом, который использует цикл без причины и не позволяет мне использовать возвращаемую переменную вне цикла.
https://stackoverflow.com/questions/37116740/how-to-store-a-single-column-of-a-single-row-out-of-a-mysqli-prepared-statement/37116998#comment61776254_37116998
Код здравомыслия-это проблема. Вы используете цикл, когда ожидается несколько результатов, и не используйте его иначе.
https://stackoverflow.com/questions/37116740/how-to-store-a-single-column-of-a-single-row-out-of-a-mysqli-prepared-statement/37116998#comment61776497_37116998
@YourCommonSense где проблема наличия цикла только с 1 itineration, это не влияет на производительность, и вы можете использовать его везде.Во всяком случае, я понимаю вашу точку зрения, это чище. Я добавлю опцию без петли, чтобы просто сравнить их и дать полный ответ, Спасибо за обратную связь :)
https://stackoverflow.com/questions/37116740/how-to-store-a-single-column-of-a-single-row-out-of-a-mysqli-prepared-statement/37116998#comment61777714_37116998
Хорошо, теперь это выглядит хорошо. Я только исправил одно странное утверждение о типе результата.
Your Common Sense

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(); 
Закрыть X