gpt4 book ai didi

PHP 使用 mysqli 的奇怪行为

转载 作者:行者123 更新时间:2023-11-30 01:12:08 25 4
gpt4 key购买 nike

我用 PHP 实现了以下代码:

function attemptDBConnection($shouldRedirect){

$con=mysqli_connect("localhost","root","root","mydb");


if ($con->connect_errno && shouldRedirect)
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
header("Location: ./errorPages/nodbconnection.html");
}


return $con;
}


function isAlreadyRegistered($con){



$email=$_POST["email"];





$testSelectUser=$con->stmt_init();
$testSelectUser->prepare("SELECT * from User WHERE email=?;");
$testSelectUser->bind_param("s",$email);
$testSelectUser->execute();
$resultUser=$testSelectUser->get_result();
$rowsUser=mysqli_num_rows($resultUser);

return $rowsUser>0;



}

$con=attemptDBConnection(true);

if(isAlreadyRegistered($con)){
header("Location: ./errorPages/alreadyregistered.html");
mysqli_close($con);
exit;
}

并且发生以下事情:当调用 attemptsDBConnection 时 mysqli_connect 执行正常并且没有为 $con 设置 errno,此时 $con->affected_rows 为 0。$con->connect_errno 为零,因此从未输入 if,但条件设置后 $con->affected_rows 设置为 -1 不知道为什么!

然后返回 $con。

当 isAlreadyRegistered 函数执行时,execute 调用返回 true 但 $testUserSelect->affected_rows 设置为 -1 但 errno 为 0 。下一次调用 get_result() 永远不会返回。

什么可能导致这种情况发生?我做错了什么?

PHP 对我来说还很陌生,我一直无法弄清楚这里发生了什么。谢谢。

编辑:

我做了一些测试:如果我为此替换 isAlreadyRegistered() 函数:

function isAlreadyRegistered($con){



$email=$_POST["email"];





$testSelectUser=$con->stmt_init();
$testSelectUser->prepare("SELECT * from User WHERE email='myemail@gmail.com';");
$testSelectUser->execute();
$resultUser=$testSelectUser->get_result();
$rowsUser=mysqli_num_rows($resultUser);

return $rowsUser>0;



}

然后我得到相同的结果。

如果我这样做:

    function isAlreadyRegistered($con){



$email=$_POST["email"];

$testSelectDoc="SELECT * from ask2doc.Medico WHERE email='myemail@gmail.com';";

$resultDoc=mysqli_query($con,$testSelectDoc);

$rowsDoc=mysqli_num_rows ($resultDoc );


return $rowsDoc>0;



}

然后就可以了。知道为什么吗?

最佳答案

根据 mysqli_affected_rows 的文档-1表示上次查询有错误。

检查$testSelectUser->error,但您使用的查询可能是错误的。

关于PHP 使用 mysqli 的奇怪行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19384542/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com