2013-11-15 2 views
0

Следующий код выдает ошибку: Notice: Undefined variable: morrisons.bind_result() не обязательные переменные

У меня нет абсолютно никакой идеи, почему эта ошибка происходит, кажется, проблема с фактической назначенной переменной в том, что она просто не назначается.

$sql = "SELECT name 
     FROM stds 
     INNER JOIN `users` 
     ON users.`id` = stds.`id` 
     WHERE users.`username` = ?"; 

if ($stmt = $db->prepare($sql)) { 
    $stmt->bind_param("s", $_POST['username']); 
    $stmt->execute(); 
    $stmt->bind_result($morrisons); 
    $stmt->fetch(); 
    $stmt->close(); 
} 

echo $morrisons; 
+0

Я думаю, вам нужно проверить значение $ morrisons. $ Stmt-> bind_result ($ morrisons); –

+1

Является ли '$ stmt' false? – Passerby

+0

проверить, что возвращает bind_result! Это должно быть правдой –

ответ

1
$stmt->bind_result($morrisons); 

Эта строка выполняется только если эта линия

if ($stmt = $db->prepare($sql)) { 

производит true результат. В противном случае весь блок пропускается, и $morrisons никогда не объявляется. Таким образом, эта линия

echo $morrisons; 

приведет к ошибке. Таким образом, основная причина заключается в том, что $db->prepare возвращает false, что означает, что запрос некорректен или соединение с базой данных ушло. Проверьте ошибки в этом случае.

Смежные вопросы