Mysql SELECT查询确实有效,现在没有2分钟后(没有更改)

时间:2014-10-28 11:03:44

标签: php mysql

我最近遇到了一些奇怪的问题,我的代码播放得很糟糕,工作一秒钟然后没有工作!!

我有这个查询

$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个以上没有运气!

修改

现在正在工作

我不知道怎么样,我没有改变一件事。我认为这与会议有关。

1 个答案:

答案 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.');
}

(注意:我在运行查询之前逃避了您的参数...只是为了确保在有人复制/粘贴代码时不会忘记它。顺便说一下,您可以考虑切换到准备好的语句......更容易使用,更安全。)