可能重复:
mysql_fetch_array() expects parameter 1 to be resource, boolean given in select
mysql_fetch_assoc() expects parameter 1 to be resource
我正在尝试从一个表中获取单个字段并将其添加到另一个表中。
这是我使用MySQL / PHP的第三天,所以我遇到了一些问题 PHP抛出一个错误,期望一个资源,但给出了一个字符串 它是一个表中自动递增的ID字段。
基本上,我拉出第一个名字和姓氏匹配的ID。
$query5 = "SELECT FROM ".$db_prefix."customer_det (`id`)
WHERE fname = '".$fname."'
AND lname = '".$lname."'";
$result5 = mysql_query($query5);
while($row = mysql_fetch_assoc($result5)){
$uid = $row['id'];
echo "$uid";
}
错误:
警告:mysql_fetch_assoc()期望参数1为资源,布尔值为
答案 0 :(得分:4)
$result5 = "mysql_query($query5)";
^ ^
删除引号。
如果你使用了var_dump($result5);
,那就是string
。原因是双引号或单引号中的所有内容都被视为php中的字符串。
你还需要处理这样的错误:
$result5 = mysql_query($query5) or die(mysql_error());
因为mysql_query
将在失败时返回false
如果您对字符串表示感兴趣,请查看manual。
此外,您的查询中存在语法错误。您缺少要从db中检索的列:
$query5 = "select from ".$db_prefix."customer_det (`id`) where fname = '".$fname."' and lname = '".$lname."'";
^
在*
select
(或列名称)
答案 1 :(得分:1)
$query5 = "select from ".$db_prefix."customer_det (`id`) where fname = '".$fname."' and lname = '".$lname."'";
$result5 = mysql_query($query5);
while($row = mysql_fetch_assoc($result5)){
$uid = $row['id'];
echo "$uid";
}
答案 2 :(得分:0)
更改 -
$result5 = "mysql_query($query5)";
TO
$result5 = mysql_query($query5);
答案 3 :(得分:0)
使用此
$result5 = mysql_query($query5);
而不是这个
$result5 = "mysql_query($query5)";
答案 4 :(得分:0)
我猜测抛出错误的一行就是这一行:
while($row = mysql_fetch_assoc($result5)){
函数mysql_fetch_assoc
是“期望资源”,因为您需要将SQL查询的结果传递给它,它将从这些结果中获取。但是,$result5
不是SQL查询,而是字符串:
$result5 = "mysql_query($query5)";
我不确定你为什么要引用它,但如果你想要实际解释代码,你不希望它们在那里:
$result5 = mysql_query($query5);
这将运行mysql_query
函数并将其返回值(即资源)放入$result5
。
现在是更重要的事情......
首先,您的代码对SQL injection attacks持开放态度。关于这一点有很多要了解,单个Stack Overflow答案不会涵盖它。因此,我将尝试总结这个概念,只是说你永远不应该曾使用用户输入值的原始字符串连接来构建SQL查询。用户可以输入恶意输入并修改您的查询,从而有效地访问您的数据库。如果您的数据库使用提升的权限运行,那么他们可以访问服务器上的更多内容,依此类推。
基本上,始终清理您的输入并且从不隐含地信任来自用户的输入。
其次,不要使用mysql_
函数。它们已被mysqli_
函数取代,原因与我刚刚提到的SQL注入内容完全无关。 The documentation page for them even very clearly states this
答案 5 :(得分:0)
您的查询中缺少所选字段(id
)的名称:
$query = "SELECT id FROM {$db_prefix}customer_det WHERE fname = '{$fname}' AND lname = '{$lname}'";
$result = mysql_query($query);
while($row = mysql_fetch_assoc($result)){
echo $row['id'];
}