我想根据数据库结果标记一个字符串。我有以下代码:
$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