2012-02-22 37 views
0

我正在寻找基于数据库结果标签的字符串。我有以下代码:从mysql_query()得到不合适的php字符串结果

$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中有效,我很难理解为什么这个简单的例子不起作用。我会感谢您的帮助!

+2

'$ loc'是MySQL的资源,而不是MySQL数据 – Poonam 2012-02-22 13:18:00

+0

退房使用例子在[请求mysql_query()文档(http://php.net/manual/en/function.mysql- query.php)。 – 2012-02-22 14:00:03

回答

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

你存储$ LOC这是一种资源的mysql_query()的返回值。

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

所以,$ LOC不是1或既不等于2

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

1

你必须和mysql_fetch_row mysql_fetch_row

例子#1读取一行获取与记录,例如在()

<?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

+0

感谢您的警告+1! – 2012-02-22 14:43:10