dscuu86620 2016-01-07 17:13
浏览 30
已采纳

MYSQLI准备声明白页

I am trying to convert some PHP code for notifications into a more suitable Prepared statement. No matter what I try, it breaks my page. Is any body out there able to tell me where the error lies?

EDIT The page is not completely blank. The page breaks after this code.

$acctNotsQry = $redoDB->prepare('SELECT message, nDate FROM notifications WHERE uID = ? AND nSeen = "0" ORDER BY nDate DESC');
$acctNotsQry->bind_param('i', intval($memID));
$acctNotsQry->execute();
$acctNotsQry->store_result();
$acctNotsQry->bind_result($notMessage, $notnDate);

if($acctNotsQry->num_rows == 0){
    echo '<li><div class="nilNots">NO NOTIFICATIONS</div></li>';
} else {
    while($acctNotsQry->fetch()) {
        ?>
        <li><i class="fa fa-bell"></i> <?php echo htmlspecialchars_decode(stripslashes($notMessage)); ?>
        <p><?php echo date('d M Y - h:ia', strtotime($notnDate)); ?></p></li>
        <?php
    }
}
$acctNotsQry->close();

SECOND EDIT: The following code DOES work, the above does not. It might help with a solution:

$acctNotsQry = 'SELECT * FROM notifications WHERE uID = "'.$memID.'" AND nSeen = "0" ORDER BY nDate DESC';  
$acctNotsRes = $redoDB->query($acctNotsQry);
$acctNotsNum = $acctNotsRes->num_rows;
if($acctNotsNum == 0){
    echo '<li><div class="nilNots">NO NOTIFICATIONS</div></li>';
} else {
    while($acctNotsRow = $acctNotsRes->fetch_assoc()){
    $notMsg = $acctNotsRow['message'];
    ?>
    <li><i class="fa fa-bell"></i> <?php echo htmlspecialchars_decode(stripslashes($notMsg)); ?>
    <p><?php echo date('d M Y - h:ia', strtotime($acctNotsRow['nDate'])); ?></p></li>
    <?php
    }
}

I have tried searching for a solution to no avail. Many thanks in advance.

  • 写回答

1条回答 默认 最新

  • duanliaolan6178 2016-01-07 17:54
    关注

    Change

    $acctNotsQry->bind_param('i', intval($memID));
    

    to

    $acctNotsQry->bind_param('i', $memID);
    

    The 2nd and following arguments to bind_param are reference parameters, so you have to use variables there, not expressions. You don't need to call intval() yourself, the i type in the first argument tells mysqli to convert it to an integer when sending it to MySQL.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 求帮我调试一下freefem代码
  • ¥15 R语言Rstudio突然无法启动
  • ¥15 关于#matlab#的问题:提取2个图像的变量作为另外一个图像像元的移动量,计算新的位置创建新的图像并提取第二个图像的变量到新的图像
  • ¥15 改算法,照着压缩包里边,参考其他代码封装的格式 写到main函数里
  • ¥15 用windows做服务的同志有吗
  • ¥60 求一个简单的网页(标签-安全|关键词-上传)
  • ¥35 lstm时间序列共享单车预测,loss值优化,参数优化算法
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图