我最近开始编程以获得乐趣,如果对此问题的解决方案很简单,那就很抱歉。
我有一个mysql表,其中存储了客户销售票据。我想要做的就是让你可以优化下拉列表中显示的票证。我可以从mysql表中填充下拉列表,但是当我单击“提交”以过滤掉并按所选客户名称显示时。我收到以下错误: -
警告:mysqli_fetch_array()要求参数1为mysqli_result,第16行的C:\ xampp \ htdocs \ result.php中给出布尔值
以下是我使用的两个PHP页面。第一页是填充下拉列表的位置。
<?php
//db connection
mysql_connect("********","********","********");
mysql_select_db("salesys");
//query
$sql=mysql_query("SELECT DISTINCT CustomerName FROM ticket ORDER BY CustomerName ASC");
if(mysql_num_rows($sql)){
$select= '<select name="select">';
while($rs=mysql_fetch_array($sql)){
$select.='<option value="'.$rs['CustomerName'].'">'.$rs['CustomerName'].'</option>';
}
}
$select.='</select>';
?>
<form name="input" action="result.php" method="POST">
<?php echo $select; ?>
<input type="submit" value="Submit">
</form>
以下是第二页。
<?php
$customerName = $_POST['select'];
echo "Showing Results For: ", $customerName;
echo "<BR>";
echo "<BR>";
$con=mysqli_connect("localhost","root","********","********");
// Check connection
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$result = mysqli_query($con,"SELECT * FROM ticket WHERE CustomerName = $customerName");
while($row = mysqli_fetch_array($result))
{
echo $row['TicketID'] . " | " . $row['CustomerName'] . " | " . $row['BriefDesc'];
echo "<br>";
echo "<br>";
}
mysqli_close($con);
?>
非常感谢任何帮助。
答案 0 :(得分:1)
如果您最近开始编程,您必须先学习如何编程。在您开始使用任何特定语言或API之前。
基本程序员的能力之一是使用谷歌的技能。这并不难:只需将您拥有的错误消息(不仅是这一个,而是每个错误)复制并粘贴到谷歌搜索栏中。你会发现数百人已经面临同样的问题,并以某种方式解决了他们。而且很可能你会找到答案。它非常简单但有用,但非常必要。
顺便说一下,评论中唯一正确的答案是:使用准备好的陈述。答案 1 :(得分:0)
您必须在while($row = mysqli_fetch_array($result))
之前检查查询是否正确,以帮助您调试代码。
您可以检查$result
是否有效。请参阅下面的简单代码(仅用于调试目的,因为在生产中显示mysql错误不安全)
在你的情况下,错误可能是$customerName
是一个字符串,并且必须用引号括起来
$customerName = '"'.mysqli_escape_string($con, $customerName).'"';
$result = mysqli_query($con, "SELECT * FROM ticket WHERE CustomerName = $customerName");
if (!$result)
{
echo mysqli_error();
}
在生产中编辑,除非验证了某些必要条件,否则不应显示错误。如果您的站点具有登录系统,则只有在您(而非其他任何人)登录时才能显示错误。