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,很抱歉,我忘了声明。