Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/rest/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 准备好的语句不适用于SELECT语句_Php_Mysql_Prepared Statement - Fatal编程技术网

Php 准备好的语句不适用于SELECT语句

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'

当我使用SQL select语句和准备好的语句时,代码工作正常,当我使用WAMP服务器在我的计算机localhost中运行该语句时,代码会显示内容

但是当我把这些代码上传到我的主机上时。没有任何结果显示或任何错误显示。但如果没有准备好的语句代码,则可以在web托管和显示结果中正常工作。这是我的代码,有没有准备好的语句。请告诉我为什么会这样

这是我的代码:

<?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);
?>