从mysql_query()得不到合适的php字符串结果

时间:2012-02-22 13:14:58

标签: php mysql

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

$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中有效,而且我很难理解为什么这个简单的情况不起作用。我很感激你的帮助!

3 个答案:

答案 0 :(得分:4)

函数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"];
}

答案 1 :(得分:2)

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

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

因此,$ loc不是1或者都不等于2。

您需要使用mysql_fetch_array / mysql_fetch_object等来操纵资源。

答案 2 :(得分:1)

您必须使用示例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