Php 准备好的语句不适用于SELECT语句
当我使用SQL select语句和准备好的语句时,代码工作正常,当我使用WAMP服务器在我的计算机localhost中运行该语句时,代码会显示内容 但是当我把这些代码上传到我的主机上时。没有任何结果显示或任何错误显示。但如果没有准备好的语句代码,则可以在web托管和显示结果中正常工作。这是我的代码,有没有准备好的语句。请告诉我为什么会这样 这是我的代码:Php 准备好的语句不适用于SELECT语句,php,mysql,prepared-statement,Php,Mysql,Prepared Statement,当我使用SQL select语句和准备好的语句时,代码工作正常,当我使用WAMP服务器在我的计算机localhost中运行该语句时,代码会显示内容 但是当我把这些代码上传到我的主机上时。没有任何结果显示或任何错误显示。但如果没有准备好的语句代码,则可以在web托管和显示结果中正常工作。这是我的代码,有没有准备好的语句。请告诉我为什么会这样 这是我的代码: <?php for($i=0;$i <$count; $i++){ require('connection.php'
<?php
for($i=0;$i <$count; $i++){
require('connection.php');
$stmt = $connection->prepare("SELECT * FROM comment WHERE status = 'Approved' limit 1 offset ?");
$stmt->bind_param('s', $id);
$stmt->execute();
$result = $stmt->get_result();
if($result->num_rows > 0) {
while($row = $result-> fetch_assoc()){
$pst_content = $row['content'];
$author = $row['commentator'];
if($i==0){
echo '<div class="item active">';
echo ' <blockquote>';
echo '<div class="row">';
echo '<div class="col-sm-12">';
echo " <p style='color:#a07936'>$pst_content</p>";
echo "<small>$author</small>";
echo ' </div>';
echo ' </div>';
echo ' </blockquote>';
echo ' </div>';
}else{
echo '<div class="item">';
echo ' <blockquote>';
echo '<div class="row">';
echo '<div class="col-sm-12">';
echo " <p style='color:#a07936'>$pst_content</p>";
echo "<small>$author</small>";
echo ' </div>';
echo ' </div>';
echo ' </blockquote>';
echo ' </div>';
}
}
}
}
?>
您试图将$id绑定到“s”,但您使用的是?在您的查询中
试一试
或者更好
$stmt = $connection->prepare("SELECT * FROM comment WHERE status = 'Approved' limit 1 offset :id");
$stmt->bind_param(':id', $id);
由于您使用的是带有命名参数的
bind_param()
,因此也应该在查询中对其命名:
$stmt = $connection->prepare("SELECT * FROM comment WHERE status = 'Approved' limit 1 offset :s");
$stmt->bind_param('s', $id);
当然,您的$id变量应该被定义,并为offset子句保留一个有意义的值。根据过程样式编码。您的表列如下所示?评论员,内容?那么
<?php
$link = mysqli_connect("localhost", "my_user", "my_password", "world");
/* check connection */
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
for($i=0;$i <$count; $i++){
if ($stmt = mysqli_prepare($link, "SELECT commentator,content FROM comment WHERE status = 'Approved' limit 1 offset ?")) {
/* bind parameters for markers */
mysqli_stmt_bind_param($stmt, "s", $i);
/* execute query */
mysqli_stmt_execute($stmt);
/* bind result variables */
mysqli_stmt_bind_result($stmt,$cmnt,$cont);
/* fetch value */
mysqli_stmt_fetch($stmt);
$pst_content = $cont;
$author = $cmnt;
if($i==0){
echo '<div class="item active">';
echo ' <blockquote>';
echo '<div class="row">';
echo '<div class="col-sm-12">';
echo " <p style='color:#a07936'>$pst_content</p>";
echo "<small>$author</small>";
echo ' </div>';
echo ' </div>';
echo ' </blockquote>';
echo ' </div>';
}else{
echo '<div class="item">';
echo ' <blockquote>';
echo '<div class="row">';
echo '<div class="col-sm-12">';
echo " <p style='color:#a07936'>$pst_content</p>";
echo "<small>$author</small>";
echo ' </div>';
echo ' </div>';
echo ' </blockquote>';
echo ' </div>';
}
/* close statement */
mysqli_stmt_close($stmt);
}
}
/* close connection */
mysqli_close($link);
?>
不要在循环中使用require
。否则,请使用require_once
:)我尝试了这个方法,但出现了以下错误`调用成员函数bind_param()`line$stmt->bind_param(':id',$id)
致命错误:在非对象上调用成员函数bind_param()
我尝试了这一个。此错误发生在此行$stmt->bind_param('s',$id)
您应该非常遵守上面评论中的@Manav advice。然后检查connection.php文件,如果出现错误,可能会出现一些错误。
$stmt = $connection->prepare("SELECT * FROM comment WHERE status = 'Approved' limit 1 offset :s");
$stmt->bind_param('s', $id);
<?php
$link = mysqli_connect("localhost", "my_user", "my_password", "world");
/* check connection */
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
for($i=0;$i <$count; $i++){
if ($stmt = mysqli_prepare($link, "SELECT commentator,content FROM comment WHERE status = 'Approved' limit 1 offset ?")) {
/* bind parameters for markers */
mysqli_stmt_bind_param($stmt, "s", $i);
/* execute query */
mysqli_stmt_execute($stmt);
/* bind result variables */
mysqli_stmt_bind_result($stmt,$cmnt,$cont);
/* fetch value */
mysqli_stmt_fetch($stmt);
$pst_content = $cont;
$author = $cmnt;
if($i==0){
echo '<div class="item active">';
echo ' <blockquote>';
echo '<div class="row">';
echo '<div class="col-sm-12">';
echo " <p style='color:#a07936'>$pst_content</p>";
echo "<small>$author</small>";
echo ' </div>';
echo ' </div>';
echo ' </blockquote>';
echo ' </div>';
}else{
echo '<div class="item">';
echo ' <blockquote>';
echo '<div class="row">';
echo '<div class="col-sm-12">';
echo " <p style='color:#a07936'>$pst_content</p>";
echo "<small>$author</small>";
echo ' </div>';
echo ' </div>';
echo ' </blockquote>';
echo ' </div>';
}
/* close statement */
mysqli_stmt_close($stmt);
}
}
/* close connection */
mysqli_close($link);
?>