我最近遇到了一些奇怪的问题,我的代码播放得很糟糕,工作一秒钟然后没有工作!!
我有这个查询
$stuff_get = mysqli_query($con,"SELECT users.id, users.email, users.hash, users.username FROM users WHERE users.username = '$username' AND users.id=$id4");
$gotstuff = mysqli_fetch_array($stuff_get, MYSQL_ASSOC);
提供此错误消息
Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, boolean given
通常这意味着它通常不起作用但事先2分钟就完成了工作(没有任何变化)。
这是完整的代码
<?php
session_start();
$username = $_SESSION['userlogin'];
include("connect.php");
$id_get = mysqli_query($con,"SELECT units.id, users.id, users.username FROM units, users WHERE users.username = '$username' AND units.id = users.id");
$gotid = mysqli_fetch_array($id_get);
$id4 = $gotid["id"];
$stuff_get = mysqli_query($con,"SELECT users.id, users.email, users.hash, users.username FROM users WHERE users.username = '$username' AND users.id=$id4");
$gotstuff = mysqli_fetch_array($stuff_get, MYSQL_ASSOC);
$hash2 = $gotstuff['hash'];
$email2 = $gotstuff['email'];
$username2 = $gotstuff['username'];
echo "Your username is ",$username2,"<br>";
echo "Your activation code is ",$hash2,"<br>";
?>
它应该是我在注册时发送的电子邮件的一些内容,它是我第一次测试注册时工作但我已经在相同的条件下测试了5个以上没有运气!
修改
现在正在工作
我不知道怎么样,我没有改变一件事。我认为这与会议有关。
答案 0 :(得分:0)
加载结果后,您必须检查它是否成功。因为服务器总是有可能消失,或者没有可用的免费连接。
如果是这种情况,那么mysqli_query
将返回false
,这似乎是您正在经历的行为。
$username = mysqli_real_escape_string($username);
$id4 = mysqli_real_escape_string($id4);
$stuff_get = mysqli_query($con,
"SELECT users.id, users.email, users.hash, users.username
FROM users
WHERE
users.username = '$username'
AND users.id=$id4");
if ($stuff_get)
{
$gotstuff = mysqli_fetch_array($stuff_get, MYSQL_ASSOC);
}
else
{
throw new \Exception('Could not retrieve result.');
}
(注意:我在运行查询之前逃避了您的参数...只是为了确保在有人复制/粘贴代码时不会忘记它。顺便说一下,您可以考虑切换到准备好的语句......更容易使用,更安全。)