PHP SQL语句不起作用,但直接从phpmyadmin工作



我看到了很多关于这方面的问题,但我还没有找到我自己的答案。我有一个PHP,用户在其中输入票号,信息将存储在一个数据库中,但我想检查另一个数据库和表,以检查该号码是否在表中。输入是一个字符串,我尝试过intval($ticket(,但仍然不起作用。

$ticketQry = mysqli_prepare($con,"select count(*) from <database2>.mantis_bug_table where id =?");
mysqli_stmt_bind_param($ticketQry,'i',intval($Ticket));
mysqli_execute($ticketQry);
var_dump($ticketQry);
Result:
object(mysqli_stmt)#7 (10) { ["affected_rows"]=> int(-1) ["insert_id"]=> int(0) ["num_rows"]=> int(0) ["param_count"]=> int(1) ["field_count"]=> int(1) ["errno"]=> int(0) ["error"]=> string(0) "" ["error_list"]=> array(0) { } ["sqlstate"]=> string(5) "00000" ["id"]=> int(6) }

我发现affected_rows int(-1(表示查询有问题,但我一辈子都无法解决。

我尝试添加一个mysqli_select_db((语句来在两个数据库之间切换,是的,当我这样做时,我从SQL语句中删除了它,但没有成功。

现在,如果我进入phpmyadmin并输入相同的参数和sql语句,它就可以正常工作。我也试过把它绑成绳子。

如果我在phpmyadmin中运行这个,结果是1。所以我再次知道这是在phpmyadmin中工作的,但不是我的PHP脚本。

您需要调用mysqli_stmt_store_result()来缓冲准备好的语句的结果。

php > $db = new mysqli('localhost', 'username', 'password', 'dbname');
php > $stmt = $db->prepare("SELECT COUNT(*) from t_users where username = ?");
php > $username = 'barmar';
php > $stmt->bind_param("s", $username);
php > $stmt->execute();
php > var_dump($stmt);
object(mysqli_stmt)#1 (10) {
["affected_rows"]=> // affected_rows is initially -1
int(-1)
["insert_id"]=>
int(0)
["num_rows"]=> // num_rows is initially 0
int(0)
["param_count"]=>
int(1)
["field_count"]=>
int(1)
["errno"]=>
int(0)
["error"]=>
string(0) ""
["error_list"]=>
array(0) {
}
["sqlstate"]=>
string(5) "00000"
["id"]=>
int(1)
}
php > $stmt->store_result();
php > var_dump($stmt);
object(mysqli_stmt)#1 (10) {
["affected_rows"]=> // affected_rows is now 1
int(1)
["insert_id"]=>
int(0)
["num_rows"]=> // num_rows is now 1
int(1)
["param_count"]=>
int(1)
["field_count"]=>
int(1)
["errno"]=>
int(0)
["error"]=>
string(0) ""
["error_list"]=>
array(0) {
}
["sqlstate"]=>
string(5) "00000"
["id"]=>
int(1)
}

最新更新