Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.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 使用绑定参数时mysqli执行失败_Php_Mysql_Mysqli - Fatal编程技术网

Php 使用绑定参数时mysqli执行失败

Php 使用绑定参数时mysqli执行失败,php,mysql,mysqli,Php,Mysql,Mysqli,我有一个用于登录数据库的mysql查询,但由于某种原因,它返回-1,即使我输入了正确的值,并且相同的查询在没有bind_参数的情况下执行 $username = $_POST['username']; $password = md5($_POST['password']); $user_array = array('username' => $username,'password' => $password ); $queryname = "SELECT username, pa

我有一个用于登录数据库的mysql查询,但由于某种原因,它返回-1,即使我输入了正确的值,并且相同的查询在没有bind_参数的情况下执行

$username = $_POST['username'];
$password = md5($_POST['password']);
$user_array = array('username' => $username,'password' => $password );  
$queryname = "SELECT username, password FROM user WHERE username = ? AND password = ?";

function auth($queryname,$user_array) {
        $stmt = $this->connection->prepare($queryname);
        $stmt->bind_param('ss', $user, $pass);  
        $user=$user_array['username'];
        $pass=$user_array['password'];
        $stmt->execute();       
        return $stmt->affected_rows;        
    }
关于如何调试这个问题,有什么建议吗?

此函数仅适用于更新表的查询。要从SELECT查询中获取行数,请改用

更改
返回$stmt->受影响的行至:

$stmt->store_result();
$count = $stmt->num_rows;
$stmt->close();
return $count;

我现在已经这样做了,from~“-1表示查询返回了一个错误”。另外,一个
SELECT
查询永远不会导致
受影响的行
@Phil我的绑定参数中可能有什么错误吗我使用的是md5散列文本,它存储为varchar在创建连接之前运行这个
mysqli_报告(mysqli_报告错误| mysqli_报告严格)并看着错误滚滚而来;)谢谢,虽然我的解决方案得到了其他人的回答,但我现在知道了一种更好的调试方法mysqli@Bazinga777此外,还必须关闭$stmt:请参阅修改的代码