Php 警告mysql_fetch_array()期望参数1是给定的资源布尔值

Php 警告mysql_fetch_array()期望参数1是给定的资源布尔值,php,Php,我希望我能得到一些帮助,或者朝着正确的方向前进,我是php新手,还在学习 目前我正在尝试开发一个网站,可以添加,编辑,删除和搜索我的MYSQL数据库。随着添加,编辑,删除部分,我觉得很有信心,不应该有一个问题。我只是在搜索功能上遇到了问题。我可以手动搜索我的数据库并显示该表中的所有内容,但现在我正在尝试这样做,以便我可以输入名字或姓氏,并且表中有关查询的所有数据都将显示出来 目前我有两个php文件search.php:带有输入类型:textbox和submit按钮,这样我就可以输入名字并点击se

我希望我能得到一些帮助,或者朝着正确的方向前进,我是php新手,还在学习

目前我正在尝试开发一个网站,可以添加,编辑,删除和搜索我的MYSQL数据库。随着添加,编辑,删除部分,我觉得很有信心,不应该有一个问题。我只是在搜索功能上遇到了问题。我可以手动搜索我的数据库并显示该表中的所有内容,但现在我正在尝试这样做,以便我可以输入名字或姓氏,并且表中有关查询的所有数据都将显示出来

目前我有两个php文件search.php:带有输入类型:textbox和submit按钮,这样我就可以输入名字并点击search,我还有一个searchresult.php:我想搜索我输入的名字,并显示客户id、名字、姓氏和电子邮件,这些都填充在我数据库中的customers表中

目前,我得到一个错误:警告mysql\u fetch\u数组期望参数1是resource,给定布尔值,我一直在阅读有关该问题的信息,但仍然不确定从这里可以做什么,并且希望对我的代码有一些帮助,也许还有一个更好的简化错误解释

下面将显示这两个页面的代码:

下面是我的search.php代码:只是一个简单/基本的html

<!DOCTYPE HTML>
<html>
<head>
<title>Conxbiz - Search Customer</title>
<link rel="stylesheet" type="text/css" href="../conxbiz/css/main.css">
</head>

<body>
<form name="form" action="searchresult.php" method="get"> 
<input name="firstname" type="text"> 
<input type="submit" name="search" value="Search"> 
</form> 

<?php

?>


</body>
</html>
下面是我的searchresult.php代码:

<!DOCTYPE HTML>
<html>
<head>
<title>Conxbiz - Home</title>
<link rel="stylesheet" type="text/css" href="../conxbiz/css/main.css">
</head>

<body>


<?php
$firstname = $_GET['firstname'];

echo "<table>";
echo "<tr>";
echo "<th>cust_id</th>";
echo "<th>First Name</th>";
echo "<th>Last Name</th>";
echo "<th>Email</th>";
echo "</tr>";

mysql_connect("localhost", "root", "") or die("Could not connect: " . mysql_error());
mysql_select_db("conxbiz");

$query = mysql_query("SELECT * FROM customers WHERE firstname '$firstname'");


while ($row = mysql_fetch_array($query, MYSQL_ASSOC))
{
$cust_id = $row['cust_id'];
$firstname = $row['firstname'];
$lastname = $row['lastname'];
$email = $row['email'];

echo "<tr>";
echo "<td>" . $row['cust_id'] . "</td>";
echo "<td>" . $row['firstname'] . "</td>";
echo "<td>" . $row['lastname'] . "</td>";
echo "<td>" . $row['email'] . "</td>";
echo "</tr>";
}

echo "</table>";
?>


</body>
</html>
因此,为了重新定义,我的目标是,我想在文本框中输入say adam,点击search,让php代码调出cust_id、firstname、lastname和email,并将其显示在数据库中所有adams的屏幕上

是否有以下情况:

它没有读取我从文本框传递的内容,因此它失败了。 它读取我传递的内容,但我的SQL是错误的,因此它失败了 是不是说一个数字,而不是文字,所以它并不期待它。 是否返回真/假且不显示数据? 我的代码全错了,我应该放弃:哈哈 我想帮助我的编码,但我希望我也可以得到一个错误的解释,供将来参考

我的编码不是最好的,但正如我所说,我仍在学习,目前只是想让基本功能发挥作用。。。。宝贝,哈哈

我猜我的编码是完全错误的:但希望有人能帮助我


感谢您提前提供的任何帮助/指导

这是无效语法:

SELECT * FROM customers WHERE firstname '$firstname'
您需要一个运算符,如=:

请注意,即使进行了此更改,您的代码也容易受到SQL注入的攻击。事实上,如果可行的话,我建议完全远离mysql_*函数,它们已经被弃用,并转移到mysql_*函数,这样可以更容易地编写不易受SQL注入攻击的代码。

行中:

$query = mysql_query("SELECT * FROM customers WHERE firstname '$firstname'");
像这样在名字后面放一个等号

$query = mysql_query("SELECT * FROM customers WHERE firstname = '$firstname'");

此外,使用以mysql为前缀的数据库对象和方法(如mysql_查询)是相当过时和不安全的。我建议更新以mysqli为前缀的方法,或者如果您想保护您的应用程序,请使用PDO。

只要传递给mysql\u查询的查询中有错误,就会出现此错误。这意味着您的查询有问题。首先需要检查的是您编写的查询

在这种情况下,您忘记在firstname“$firstname”之间放置=登录

因此尝试

$query=mysql\u querySELECT*来自firstname='$firstname'的客户

或者,由于它是char或varchar类型的字符串,请尝试使用like运算符


$query=mysql\u querySELECT*来自名为“$firstname”的客户

我是php新手,还在学习。然后停止学习不推荐的函数。使用PDO或mysqli。只是一个简单的要点-使用像“$firstname”这样的名称是没有意义的。没有任何通配符,它的功能与=“$firstname”Ohh相同。。。谢谢你纠正我!天哪,哇!非常感谢。不敢相信我忘记了一个=符号,我已经断断续续地查看了我的代码两天了:我会查看PDO:再次感谢!非常感谢。一个简单的标志:lol我会调查PDO!想想看,我已经断断续续地看了两天的代码,我的脑子里都是:哈哈
$query = mysql_query("SELECT * FROM customers WHERE firstname = '$firstname'");