第二个mysqli_query失败

时间:2014-09-09 05:09:22

标签: php html

第一个查询很好,但第二个查询不会工作它只是死了。 我将$city变量插入第二个变量并将其回显并显示正确 价值,但它是实际的:

$row = mysqli_query($dbc, $query)
  or die('Error while querying the Database');

失败了......请帮忙!

        $dbc = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME)
            or WriteMessage('Error', 'Could not connect to the Database...');

    //get user city...

    $userID = $_SESSION['userID'];
    $queryUserCity = "SELECT * from user where userID = $userID";
    $GetResult = mysqli_query($dbc, $queryUserCity)
     or die('Error while querying the Database');

    $getRow = mysqli_fetch_array($GetResult);
    $city = $getRow['city'];
    $state = $getRow['state'];
    $username = $getRow['username'];

    echo 'username='.$username.' ';
    echo 'city='.$city;
    echo 'state = ' .$state;



        $query = "SELECT * FROM adds where city = $city  ORDER BY addDate ASC";          
        //fails right here...

 /*-->*/       $row = mysqli_query($dbc, $query)
               or die('Error while querying the Database');

        echo $query;
        exit();
        while($row = mysqli_fetch_array($data))
        {

2 个答案:

答案 0 :(得分:1)

您正在尝试查找没有单引号的字符串。您使用integer而不使用single quote,但如果是字符串,则必须将single quotestring一起使用。

更改

$query = "SELECT * FROM adds where city = $city  ORDER BY addDate ASC";

$query = "SELECT * FROM adds where city = '$city'  ORDER BY addDate ASC";

并找出确切的错误,请尝试使用以下代码。

if (!mysqli_query($dbc, $query)){
     echo("Error description: " . mysqli_error($dbc));
}

答案 1 :(得分:1)

如果城市是文本类型(可能是),您需要:

... where city = '$city' ...

但事实上,你不应该真的这样做,因为如果有人可以为他们的城市输入任意文本,它会让你注意到SQL注入攻击的可能性。

您应该开始研究参数化查询,因为它们可以保护您免受此类攻击。请参阅Exploits of a Mom和宝贵的explain-xkcd条目。