我想要同时获得我的查询结果和行计数,但是如果可能的话,必须使两次行数为数据库行。我正在以程序方式使用准备好的陈述。我的代码如下:准备好声明返回获取结果和计数
$dbd = mysqli_stmt_init($dbconnection);
if (mysqli_stmt_prepare($dbd, "SELECT * FROM Contacts WHERE First_Name = ?")) {
mysqli_stmt_bind_param($dbd, "s", $val1);
if (!mysqli_stmt_execute($dbd)) {
echo "Execute Error: " . mysqli_error($dbconnection);
} else {
//do nothing
}
} else {
echo "Prep Error: " . mysqli_error($dbconnection);
}
$result = mysqli_stmt_get_result($dbd);
所以上面的代码工作得很好,并返回我的结果。我现在想要做的是使用这个相同的陈述来获得行数,但我不想写一个全新的准备好的陈述。如果我编写一个单独的准备好的语句并使用store_results和num_rows,我会得到行数,但这会迫使我不得不编写一整块新代码并跳至db。我试图做一些事情如下,但它抛出和错误:
$dbd = mysqli_stmt_init($dbconnection);
if (mysqli_stmt_prepare($dbd, "SELECT * FROM Contacts WHERE First_Name = ?")) {
mysqli_stmt_bind_param($dbd, "s", $val1);
if (!mysqli_stmt_execute($dbd)) {
echo "Execute Error: " . mysqli_error($dbconnection);
} else {
//do nothing
}
} else {
echo "Prep Error: " . mysqli_error($dbconnection);
}
$result = mysqli_stmt_get_result($dbd);
mysqli_stmt_store_result($dbd);
$rows = mysqli_stmt_num_rows($dbd);
的罚球和错误,就像我不能运行都得到使用相同的预处理语句的结果和存储结果。我只是尽量保持我的代码紧凑和重用。如果我把上面的代码分解成两个分离的准备好的语句,它工作正常,我只是想知道有一种方法可以在现有语句中添加一行或两行,并获得行数。或者我必须用新的stmt_init,stmt_prepare,bind_param,execute等编写一个完整的代码块...
试试这个 - HTTP ://php.net/manual/en/mysqli-stmt.num-rows.php – ajreal