我正在尝试将一些用于通知的PHP代码转换为更合适的Prepared语句。无论我尝试什么,它都打破了我的页面。是否有任何机构可以告诉我错误在哪里?
编辑页面不是完全空白。此代码后的分页符。
$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();
第二次编辑:以下代码可以正常工作,上面没有。它可能有助于解决方案:
$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
}
}
我试过寻找无效的解决方案。 非常感谢提前。
答案 0 :(得分:1)
更改
$acctNotsQry->bind_param('i', intval($memID));
到
$acctNotsQry->bind_param('i', $memID);
bind_param
的第二个和后面的参数是引用参数,因此您必须在那里使用变量,而不是表达式。您不需要自己调用intval()
,第一个参数中的i
类型告诉mysqli在将其发送到MySQL时将其转换为整数。