Php 返回的行数不为';行不通
这是我目前拥有的代码:Php 返回的行数不为';行不通,php,mysql,prepared-statement,Php,Mysql,Prepared Statement,这是我目前拥有的代码: $stmt = $mysqli->prepare("SELECT * FROM Account WHERE accountKey=? AND accountUsername=?"); $stmt->bind_param('ss', $key,$username); $stmt->execute(); $stmt->store_result(); $numrows = $stmt->num_rows;
$stmt = $mysqli->prepare("SELECT * FROM Account WHERE accountKey=? AND accountUsername=?");
$stmt->bind_param('ss', $key,$username);
$stmt->execute();
$stmt->store_result();
$numrows = $stmt->num_rows;
问题是这个查询很好。我在PHPMyAdmin上尝试了它,它返回了一个结果。当我检查有多少结果,我得到了这个总是0时,它应该是1。。。你知道会发生什么吗
来自PHPMyAdmin的查询:
那么什么是?
?另请注意,您正在使用prepare
。查询没有问题。我没有得到任何错误。它只返回0我尝试只放置accountKey或accountUsername,但它们都没有更改任何内容…也许我应该更直接一些。在中说明什么是$key
和$username
。而且它是否存在于帐户中
?我从未使用过存储结果
,但手册页上说它传输了上次查询的结果集。是不是在你有机会使用它之前清空了结果集?如果在调用store\u result
之前将num\u rows
调用移动到,会得到什么结果?在打开和之后立即将错误报告添加到文件顶部?解释一下就好了。OP可能不清楚一段代码是否有错误。或者他们做错了什么。我现在明白了:mysqli_stmt_bind_param()希望参数1是mysqli_stmt,字符串在yes中给出,我的错,我忘了添加$stmt作为第一个参数。再说一遍,$key
和$username
是什么@Jean MathieuHmm。我唯一能想到的是$key和$username没有正确设置,或者$stmt未关闭。
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
include("../script/connection.php");
$link = mysqli_connect($SQLhost, $SQLusername, $SQLpassword, $SQLdatabase);
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
$key = '4dc5f0ea67ca3791614b28c310cd1c79';
$username = 'jean8mathieu';
$query = "SELECT * FROM Account WHERE accountKey=? AND accountUsername=?";
if ($stmt = mysqli_prepare($link, $query)) {
mysqli_stmt_bind_param($stmt, 'ss', $key, $username);
mysqli_stmt_execute($stmt);
mysqli_stmt_store_result($stmt);
printf("Number of rows: %d.\n", mysqli_stmt_num_rows($stmt));
mysqli_stmt_close($stmt);
} else {
printf('errno: %d, error: %s', $mysqli->errno, $mysqli->error);
exit;
}
mysqli_close($link);