PHP准备的声明我很想知道为什么这不起作用

PHP准备的声明我很想知道为什么这不起作用,php,prepared-statement,Php,Prepared Statement,首先,我必须说我喜欢PHP。这太有趣了。这是我的问题,我正在准备声明和以下工作 <?php $qm = $con->prepare("SELECT id, receiving_user_id, send_date, message_title, message_body, senders_name FROM Messages WHERE receiving_user_id=? ORDER by id"); /* execute statement */ $qm ->bind_p

首先,我必须说我喜欢PHP。这太有趣了。这是我的问题,我正在准备声明和以下工作

<?php
$qm = $con->prepare("SELECT id, receiving_user_id, send_date, message_title, message_body, senders_name FROM Messages WHERE receiving_user_id=? ORDER by id");
/* execute statement */
$qm ->bind_param('i',$userid);
$qm->execute();
/* bind result variables */
$qm->bind_result($messid, $uid, $sent, $title, $body, $dudesname);
/* fetch values */
while ($qm->fetch()) {
    echo ($dudesname. $title." ");
}
/* close statement */
$qm->close();
/* close connection */
$sql_e = $con-> prepare("SELECT id FROM Messages WHERE receiving_user_id=?");
$sql_e -> bind_param('i', $userid);
$sql_e -> execute();
$userCheck = $sql_e -> get_result();
$sql_e -> close();
if ($userCheck -> num_rows == 0) {
    echo "No Messages... :(";
}
?>
难道准备好的语句不是为了输入相同的东西,比如

$qm -> execute();
// Different Variables Here
$qm -> close();

$qm -> execute();
// Yet Another Set of Variables Here
$qm -> close();
很奇怪。如果您对此有任何意见,我们将不胜感激。我是PHP开发新手,正在努力学习我能学到的一切

编辑代码以使其与$stmt reset()一起工作


您不需要执行两次查询。我想这就是你想要的:

$qm = $con->prepare("SELECT id, receiving_user_id, send_date, message_title, message_body, senders_name FROM Messages WHERE receiving_user_id=? ORDER by id");
/* execute statement */
$qm ->bind_param('i',$userid);
$qm->execute();
/* bind result variables */
$qm->bind_result($messid, $uid, $sent, $title, $body, $dudesname);
/* fetch values */
$userCheck = $qm->get_result();
if ($userCheck->num_rows > 0) {
     while ($userCheck->fetch()) {
         echo $dudesname. $title . " ";
     }
} else {
     echo "No Messages... :(";
}
/* close statement */
$qm -> close();

您当前的代码很早就关闭了与的连接。

嘿,所以它显示为一个白色屏幕。我知道这听起来像新手,但我如何检查错误?我知道我用的是“要么死”的语句,但我有点困惑,在准备好的语句中应该在哪里使用它。顺便说一句,感谢您迄今为止提供的所有帮助,无论我们是否使用您的上述代码获得帮助,我仍然将其标记为已回答,因为您确实帮助我回答了我的原始问题。有关mysqli错误,请参阅,有关PHP错误,请参阅。白色屏幕听起来像是语法错误。
$qm = $con->prepare("SELECT id, receiving_user_id, send_date, message_title, message_body, senders_name FROM Messages WHERE receiving_user_id=? ORDER by id");
/* execute statement */
$qm ->bind_param('i',$userid);
$qm->execute();
/* bind result variables */
$qm->bind_result($messid, $uid, $sent, $title, $body, $dudesname);
/* fetch values */
while ($qm->fetch()) {
    echo ($dudesname. $title." ");
}
/* reset statement */
$qm->reset();

$qm -> execute();
$userCheck = $qm -> get_result();
if ($userCheck -> num_rows == 0) {
    echo "No Messages... :(";
}

/* close statement */
$qm -> close();
$qm = $con->prepare("SELECT id, receiving_user_id, send_date, message_title, message_body, senders_name FROM Messages WHERE receiving_user_id=? ORDER by id");
/* execute statement */
$qm ->bind_param('i',$userid);
$qm->execute();
/* bind result variables */
$qm->bind_result($messid, $uid, $sent, $title, $body, $dudesname);
/* fetch values */
$userCheck = $qm->get_result();
if ($userCheck->num_rows > 0) {
     while ($userCheck->fetch()) {
         echo $dudesname. $title . " ";
     }
} else {
     echo "No Messages... :(";
}
/* close statement */
$qm -> close();