mysql_fetch_array()/mysql_fetch_assoc()/mysql_fetch_row()/mysql_num_rows etc… expects parameter 1 to be resource or result (32个答案)
2年前关闭。
好的,我希望有人可以为我已经苦苦挣扎了两周的这段代码提供帮助。我必须从几个文本框中从mysql数据库中获取数据。现在的问题是,当任何文本框为空时,我不希望我的查询搜索所有记录。我希望它返回并仅查询从数据库输入到文本框中的项目,即使其他文本框为空。有人说我应该使用stringbuilder,我使用了if(empty)并且它没有用,所以我想知道是否还有另一种方法可以解决这个问题。请帮忙。谢谢
我收到的错误是:警告:mysqli_num_rows()期望参数1为mysqli_result,在269行的C:\ xampp \ htdocs \ Grocery \ grocery_result.php中给出的布尔值
我的html文件
<h2>Product Search</h2><br>
<form method="post" action="grocery_result.php">
Item 1<br>
<input type="text" name="item[item1]" value="" ><br>
Item 2<br>
<input type="text" name="item[item2]" value="" ><br>
Item 3<br>
<input type="text" name="item[item3]" value="" ><br>
Item 4<br>
<input type="text" name="item[item4]" value="" ><br>
Item 5<br>
<input type="text" name="item[item5]" value="" ><br>
<input type="submit" name="search" value="Search Item">
</form>
我的PHP文件
if (isset($_POST['search']) ){
if (isset($_POST['item'])){
$arry1[] = $_POST['item'];
foreach($arry1 as $processed_array ) {
}
}
$query = "select * from products where store_id = 1 and (";
$counter = 0;
foreach ($processed_array as $key => $value) {
$counter ++;
if ($counter != $value){
$query .= "item_name like '$value' or " ;
} else {
$query .= "item_name like '$value')";
}
}
$fish = mysqli_query($con, $query);
echo "BOY";
if (mysqli_num_rows($fish) > 0){
while ($row = mysqli_fetch_array($fish)) {
# code...
$product_id = $row['pid'];
$store_id = $row['store_id'];
$category_id = $row['cat_id'];
$item_name = $row['item_name'];
$image = $row['image'];
$price = $row['price'];
$location = $row['location'];
echo "<div class='col-sm-4'>"; ?>
<form method="post" action="grocery_result.php?action=add&pid=<?php echo $row["pid"]; ?>">
<?php
echo '<img class="center-block" src = "data:image/jpeg;base64,' . base64_encode($row['image']) . '"/>';
echo "<br><p>$item_name<br>$price</p>"; ?>
<input type="hidden" name="hidden_name" value="<?php echo $row["item_name"]; ?>" />
<input type="hidden" name="hidden_price" value="<?php echo $row["price"]; ?>" />
<input type = 'text' name= "quantity" size = '3' >
<input type='submit' name ='add' value='Cart'></form></div>
<?php
}
}
}
?>
$fish = mysqli_query($con, $query);
您的SQL语法有误。检查与您的MariaDB服务器版本相对应的手册以获取正确的语法,以在第1行的''附近使用。
SQL语法错误消息报告解析器混淆后的文本。例如,如果我要写:
SELECT a, b, c, FROM mytable
我希望得到一个以“ FROM”开头的语法错误,因为由于我在c之后使用逗号,所以它在期待另一个列名。
如果我要写:
SELECT a, b, d FROM mytable WHERE store_id = 1 and
然后,我希望在''处出现语法错误,这意味着查询结束,因为“和”需要两个术语。
您最好记录该查询,以便您可以查看它,而不是构建查询的PHP代码。
我的猜测:您处理的数组为空,所以您的查询很简单:
select * from products where store_id = 1 and (
表示结尾括号内没有任何内容,也没有结尾括号。
这是我的编码方式:
$query = "select * from products where store_id = 1";
if ($processed_array) {
$values = [];
foreach ($processed_array as $value) {
$values[] = "'" . mysqli_real_escape_string($value) . "'";
}
$value_list = implode(",", $values);
$query .= " and item_name in ($value_list)";
}
$fish = mysqli_query($con, $query);
if ($fish === false) {
error_log($query . ": " . mysqli_error($con))
die("Sorry, an internal error occurred. Please contact the developer and say tsk, tsk at them.");
}