我希望根据数据库结果标记一个字符串。我有以下代码:
$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中有效,而且我很难理解为什么这个简单的情况不起作用。我很感激你的帮助!
答案 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