#php #mysql
#php #mysql
Вопрос:
У меня есть база данных, содержащая некоторую информацию. (адрес электронной почты и имя)
У меня есть форма для ввода электронного письма, и я хочу распечатать имя, которое принадлежит этому электронному письму.
$test = $_POST['mail']; //the html code works, $test prints out the email given.
$question = mysql_query("SELECT name FROM mydb WHERE email = '".$_POST['mail']."'")or die(mysql_error());
while($foo = mysql_fetch_assoc($question))
{
echo $test . " - ";
echo $foo;
}
почему foo не выводится как имя? Пока он Array
по какой-то причине выводится.
Спасибо
Комментарии:
1. mysql_real_escape_string
Ответ №1:
прочитайте руководство mysql_fetch_assoc
Возвращает ассоциативный массив строк, который соответствует выбранной строке.
чтобы получить данные, вам нужно написать $foo['name']
;
Комментарии:
1. Спасибо! Мне удалось понять это до того, как я прочитал ответы. Вы, ребята, быстрые, лол
Ответ №2:
Пожалуйста, привыкайте к заполнителям, чтобы избежать инъекционных атак. mysql_fetch_assoc()
и mysqli::fetch_assoc
эквивалентны в том смысле, что оба они возвращают ассоциативный массив; Я просто нахожу объектно-ориентированную версию более чистой.
<?php
$stmt = $dbh->prepare("SELECT name FROM mydb WHERE email = ?");
if ($stmt->execute(array($_POST['mail']))) {
while ($row = $stmt->fetch_assoc()) {
echo $test . " - " . echo $foo['name'];
}
}
?>
Ответ №3:
Потому что это массив (как указано mysql_fetch_assoc() ) (и, возможно, для того, чтобы другое приложение не было доступно для SQL-инъекций). Вы должны использовать индекс для доступа к значению ячейки:
$foo['name']
Ответ №4:
$test = mysql_real_escape_string($_POST['mail']);
$question = mysql_query("SELECT name, foo FROM mydb WHERE email = '$test'")or die(mysql_error());
while($foo = mysql_fetch_assoc($question)) {
echo $test = $foo['name'] ;
echo $foo = $foo['foo'] ;
}