我是php的新手并且遇到问题。这是我的代码:
<?php
mysql_connect("127.0.0.1","root","root");
mysql_select_db("gps");
$login=$_GET["login"];
$user_name=$_GET["user_name"];
$password=$_GET["password"];
if ($login)
{
$sql=mysql_query("SELECT * FROM users WHERE user_name='".$user_name."' AND password='".$password."' LIMIT 1");
$output[]=mysql_fetch_assoc($sql);
}
else
{
$sql=mysql_query("SELECT name,device_id,lat,lon,user_name FROM devices,users LIMIT 100");
while($row=mysql_fetch_assoc($sql))
{
$output[]=$row;
}
}
print(json_encode($output));
mysql_close();
?>
然后我通过这种方式在我的localhost中尝试这个:htt ... / getProducts-2.php?login = true&amp; user_name = jane&amp; password = 1234
然后我收到了错误:警告:mysql_fetch_assoc()期望参数1是资源,布尔值在第13行的C:\ wamp \ www \ getProducts-2.php中给出
我该怎么办?这段代码有什么问题?
我解决了根据我的目的重新组织代码的问题,然后没有任何错误或警告。谢谢你的建议。
答案 0 :(得分:0)
您的代码不会检查mysql_query的返回值。它返回false,表示您的查询失败。
此外,
问题的根本原因是您发送到mysql服务器的SQL有问题,或者它与db / table结构不匹配。当你对上面列出的代码实现错误处理时,你会看到确切的原因。
答案 1 :(得分:0)
由于字段或表名拼写错误,您的查询可能会失败。如果查询失败,则MySQL返回false。这就是关于boolean的错误消息。
不推荐使用mysql_query:See alternatives here
答案 2 :(得分:0)
使用此
SELECT d.name,d.device_id,.lat,d.lon,u.user_name
FROM devices d,users u LIMIT 100
而不是
SELECT name,device_id,lat,lon,user_name
FROM devices,users LIMIT 100
答案 3 :(得分:0)
SYNTAX错误,您正在以错误的方式从2个表中选择行..
$sql=mysql_query("SELECT name,device_id,lat,lon,user_name FROM devices,users LIMIT 100");
这应该是
$sql=mysql_query("SELECT devices.name, devices.device_id, devices.lat, devices.lon, users.user_name FROM devices,users LIMIT 100");