如何修复 mysqli_fetch_array?我使用 php、mysqli 和 html

Posted

技术标签:

【中文标题】如何修复 mysqli_fetch_array?我使用 php、mysqli 和 html【英文标题】:How to fix mysqli_fetch_array? I use php, mysqli and html 【发布时间】:2017-10-25 11:24:23 【问题描述】:

我的 php 代码有问题,它给了我以下错误:警告:mysqli_fetch_array() 期望参数 1 是 mysqli_result,在第 69 行的 C:\xampp\htdocs\funcion2.php 中给出的对象

我不知道如何解决它。我需要一些帮助,我需要完成这个项目。

<?php
//Conexion a la BBDD
include 'config.php';
session_start();

if($_REQUEST['cur'])$_SESSION['cur2']=$_REQUEST['cur'];
$cur=$_SESSION['cur2'];
$str=$cur;
$cur=explode ('|', $str);
echo $cur[0];

if ($_REQUEST['alu'])$_SESSION['alu2']=$_REQUEST['alu'];
$alu=$_SESSION['alu2'];
$str2=$alu;
$alu=explode ('|', $str2);


/*primera consulta*/
$query  = 'select * from curso';
$res=mysqli_query($conexion, $query);

/*segunda consulta*/
$query2 = 'select * from alumnos where cod_curso=$cur[0]';
$res2=mysqli_query($conexion, $query2);



?>
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="utf-8">
</head>


<body>

<form name="form1" method="post">
<div class="form-group col-md-3">
  
  <label>Curso</label>
  <select name="cur" onchange="this.form.submit() ;">
    <option value="<?php echo $cur[1] ?>" ></option>
    <?php	
     while ($row=mysqli_fetch_array($res))
     
		 
		 ?>
		 <option value="<?php echo $row[0]."|".$row[1]?>"><?php echo htmlentities($row[1]); ?>
		 </option>
		 
		 <?php  ?>
	
  </select>
   
</div>

<div class="form-group col-md-6">
  <label>Alumnos</label>					
   
   <select name="alu">
   
    <option value="<?php echo $alu[0]?>"</option>
    <?php	
     while ($value=mysqli_fetch_array($res2)) 
     
		 
		 ?>
		<?php foreach ($alu as $key => $value) ?>
		 <option value="<?php echo $value[0]."|".$value[1]?>"><?php echo htmlentities($value[1]);?>
		 </option>
		 <?php  ?>
		<?php  ?>
  </select>
    
</div>

	<input type="submit" name="enviar" value="Enviar" hidden />
	
</form>
<?php

echo "Tu curso es: ".$cur[1]."<br/>";
echo "El alumno es: ".$alu[1]."<br/>";
?>

</body>
</html>

有问题 .The error os mysql

我的数据库有这两个表: 表校友和表光标

My tables and the problem

我修改了没有@和第二个mysqli_fetch_array的参数。

【问题讨论】:

警告:在使用 @ 运算符调用方法时不要抑制错误。如果出现问题,您想了解它并需要采取纠正措施,为用户显示有用的消息,记录问题,等等。如果您忽略试图指出严重问题的错误,也会使此类调试问题变得更加复杂。 警告:使用mysqli 时,您应该使用parameterized queries 和bind_param 将用户数据添加到您的查询中。 请勿使用字符串插值或连接来完成此操作,因为您创建了一个严重的SQL injection bug。 切勿$_POST$_GET任何用户数据直接放入查询中,如果有人试图利用您的错误,这可能会非常有害。 php.net/manual/en/mysqli-result.fetch-array.php $value=mysqli_fetch_array($conexion, $cur) 应该更像$value=mysqli_fetch_array($res2) 因为它期望第一个参数是结果,但我没有发布这个作为答案,因为@tadman 的评论都应该被采纳在进一步考虑之前考虑。 我从 $_REQUEST 中删除了 @。如何从第二个选择中获取数据,第一个选择显示数据但第二​​个不起作用。对不起,我的英语很抱歉,我来自西班牙。 【参考方案1】:

为什么要将连接发送到校友的 while 循环?

while ($value=mysqli_fetch_array($conexion, $cur))

它需要一个 DB 数组结果,而不是连接。

*******编辑 现在我已经看了一下,你在这个部分仍然有错误。

<?php   
    while ($value=mysqli_fetch_array($res2)) 
    
?>
<?php 
    foreach ($alu as $key => $value)
?>
     <option value="<?php echo $value[0]."|".$value[1]?>">
        <?php echo htmlentities($value[1]);?>
     </option>
     <?php  ?>
    <?php  ?>

为什么在 while 循环中有一个 for each 循环?除非$value 有您需要在每一行内循环的数据,否则它已经被while 循环循环,您不需要for each。

【讨论】:

我将其更改为 我放了一个 foreach,因为 sql 说 alumnos.nombre 中的数据提示不能是字符串,所以我必须做一个 foreach 否? 好吧,我不确定你的数据是如何构造的,但是你在 while 循环中 $value 然后你在 foreach 中循环 $alu 并重写原始的 $value 变量。让我看看你的结构,我会更新我的答案。 drive.google.com/file/d/0B80eLEi2L7YaUjZBQmsxWmtNck0/… 。这是我的数据库

以上是关于如何修复 mysqli_fetch_array?我使用 php、mysqli 和 html的主要内容,如果未能解决你的问题,请参考以下文章

在 while 循环中使用 mysqli_fetch_array 时,PHP/MySQL 如何知道获取下一行?

mysqli_fetch_array 未更新

PHP mysqli_fetch_array选择最小值[重复]

mysqli_fetch_array() 期望参数 1 为 mysqli_result,布尔值在 [重复]

mysqli_fetch_array():参数 #1 必须是 mysqli_result 类型。如何处理mysqli问题?

如何处理mysqli问题? mysqli_fetch_array():参数 #1 必须是 mysqli_result 类型