Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/226.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 函数pageExist();总是返回false_Php_Mysqli_Prepared Statement - Fatal编程技术网

Php 函数pageExist();总是返回false

Php 函数pageExist();总是返回false,php,mysqli,prepared-statement,Php,Mysqli,Prepared Statement,因此,我仍在改进我的模板引擎,现在我要看一看请求的页面是否确实存在。请查看以下功能: public function pageExist( $id ) { $query = $this->db->connection->prepare( 'SELECT id FROM ' . $this->functions->prefix( 'pages' ) . ' where id = ?' ); $query->bind_param( 'i', $id

因此,我仍在改进我的模板引擎,现在我要看一看请求的页面是否确实存在。请查看以下功能:

public function pageExist( $id )
{
    $query = $this->db->connection->prepare( 'SELECT id FROM ' . $this->functions->prefix( 'pages' ) . ' where id = ?' );
    $query->bind_param( 'i', $id );
    $query->execute();
    if ( $query->num_rows > 0 )
    {
        return true;
    } 
        else
    {
        return false;
    }
    $query->close();
}
但问题是,它总是返回false,那么我准备的声明或其他东西有什么问题吗

我调用一个ID为1的页面,我不知道这是否与它有关,但为了可能有所帮助,我会声明它


谢谢。

永远不会有id为0的行。如果是整数,则数据库表必须从1开始。这将返回false,因为找不到任何行。

在访问mysqli\u stmt:$num\u rows之前,必须调用mysqli\u stmt::store\u result。看

摘录:

返回结果集中的行数。mysqli_stmt_num_行的使用取决于是否使用mysqli_stmt_store_result来缓冲语句句柄中的整个结果集

如果使用mysqli_stmt_store_result,则可能会立即调用mysqli_stmt_num_行

试试这个:

public function pageExist( $id )
{
    $query = $this->db->connection->prepare( 'SELECT id FROM ' . $this->functions->prefix( 'pages' ) . ' where id = ?' );
    $query->bind_param( 'i', $id );
    $query->execute();
    // Call store_result() before accessing num_rows.
    $query->store_result();
    if ( $query->num_rows > 0 )
    {
        return true;
    } 
    else
    {
        return false;
    }
    $query->close();
}

永远不能有id为0的行。如果是整数,则数据库表必须从1开始。这将返回false,因为找不到任何行。您确定您的SQL有效吗$此->函数->前缀“pages”看起来似乎只生成前缀,而不是完整的表名。@EdCottrell它将返回在另一个文件中设置的前缀,后跟给定的表名,在这种情况下,它将返回ws_pages。我已经测试过了。@W.H.E.Peeters在prepare中硬编码整个查询,包括id的值;注释掉参数绑定;查看您是否实际得到了有效的响应。@W.H.E.Peeters如果查询正确且准备工作不正常,那么唯一有意义的是您没有正确连接到数据库。数据库对象为null,或者连接没有持续。它仍然自动返回false。ID现在是1。不过,谢谢你的回答!表中实际存在哪些ID?只有1,因为这是一个测试运行。您知道这是故意的i吗?因为它表示它是一个整数?Mysqli,很抱歉,我忘了声明。