首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP准备的声明我很想知道为什么这不起作用

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

Stack Overflow用户
提问于 2018-06-01 04:58:39
回答 1查看 50关注 0票数 0

首先,我必须说我很喜欢PHP。这太有趣了。所以这是我的问题,我正在做准备好的陈述和下面的工作

代码语言:javascript
复制
<?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... :(";
}
?>

但是,由于$sql_e语句和$qm语句所做的事情完全相同,所以我认为我可以放置以下内容,这样就可以工作了。但事实并非如此。

代码语言:javascript
复制
$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 */

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

没有预先准备好的语句输入相同的内容,例如

代码语言:javascript
复制
$qm -> execute();
// Different Variables Here
$qm -> close();

$qm -> execute();
// Yet Another Set of Variables Here
$qm -> close();

怪怪的。如能对此提供任何意见,将不胜感激。我是PHP开发的新手,我正在努力学习我能学到的一切。

编辑到代码,使IT与$stmt重置()工作;

代码语言:javascript
复制
$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();
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-01 10:51:01

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

代码语言:javascript
复制
$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();

您的当前代码提前关闭了连接。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50636352

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档