没有从mysql_query()中获得合适的php字符串结果


Not getting appropriate php string result from mysql_query()

我想根据数据库结果标记一个字符串。我有以下代码:

$loc1 = "A";
$query  = "SELECT loc FROM User where nick='".$users[$j]."'";
    $loc = mysql_query($query);
    if($loc == 1)
        $loc1 = "A";
    if($loc== 2)
        $loc1 = "B";

loc1的位置始终为"A"。我已经确认查询在MySQL中有效,我很难理解为什么这个简单的案例不起作用。我将感谢你的帮助!

函数mysql_query不返回提取的列的值,而是返回一个MySQL资源,用于提取查询返回的列值。

更改:

$loc = mysql_query($query);

至:

$result = mysql_query($query);
if (!$result) {
    die('Invalid query: ' . mysql_error());
}
if ($row = mysql_fetch_assoc($result)) {
    $loc = $row["loc"];
}

您将mysql_query()返回值存储在$loc中,$loc是一个资源。

对于SELECT、SHOW、DESCRIBE、EXPLAIN和其他返回结果集的语句,mysql_query()在成功时返回资源,在错误时返回FALSE。

因此,$loc不是1,也不等于2。

您需要使用mysql_fetch_array/mysql_fetch _object等来操作资源。

您必须使用获取记录集,例如mysql_fetch_row

示例#1使用mysql_fetch_row()获取一行

<?php
$result = mysql_query("SELECT id,email FROM people WHERE id = '42'");
if (!$result) {
    echo 'Could not run query: ' . mysql_error();
    exit;
}
$row = mysql_fetch_row($result);
echo $row[0]; // 42
echo $row[1]; // the email value
?>

但是,要小心SQL注入攻击!

http://es.php.net/manual/en/security.database.sql-injection.php