【发布时间】: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>
我的数据库有这两个表: 表校友和表光标
我修改了没有@和第二个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 中删除了 @。如何从第二个选择中获取数据,第一个选择显示数据但第二个不起作用。对不起,我的英语很抱歉,我来自西班牙。
标签: php mysql mysqli xampp syntax-error