2017-05-24 24 views
0

我有我的PHP代码的一个问题,它给我的错误:警告:mysqli_fetch_array()预计参数1被mysqli_result,在C中给出的对象:\ XAMPP \ htdocs中\ funcion2.php上线69如何修复mysqli_fetch_array?我使用PHP,库MySQLi和HTML

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

<?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 \t 
 
    while ($row=mysqli_fetch_array($res)) 
 
    { 
 
\t \t 
 
\t \t ?> 
 
\t \t <option value="<?php echo $row[0]."|".$row[1]?>"><?php echo htmlentities($row[1]); ?> 
 
\t \t </option> 
 
\t \t 
 
\t \t <?php } ?> 
 
\t 
 
    </select> 
 
    
 
</div> 
 

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

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

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

 
</body> 
 
</html>

有问题 .The error os mysql

我的数据库有这2个表: 表alumnos和表CURSO

My tables and the problem

我修改了参数无覆盖ut @和第二个mysqli_fetch_array。

+2

** WARNING **:调用与'@'操作方法时,不要压制错误。如果出现问题,您希望了解它,并且需要采取纠正措施,向用户显示有用信息,记录问题或所有这些。如果您忽略了试图指出严重问题的错误,它也使得像这样的调试问题变得更加复杂。 – tadman

+1

** WARNING **:当使用'mysqli'你应该使用[参数化查询(http://php.net/manual/en/mysqli.quickstart.prepared-statements.php)和['bind_param']( http://php.net/manual/en/mysqli-stmt.bind-param.php)将用户数据添加到您的查询中。 **不要**使用字符串插值或连接来完成此操作,因为您创建了严重的[SQL注入漏洞](http://bobby-tables.com/)。 **不要**将'$ _POST','$ _GET'或**任何**用户数据直接放入查询中,如果有人试图利用您的错误,这可能会非常有害。 – tadman

+1

http://php.net/manual/en/mysqli-result.fetch-array.php'$ value = mysqli_fetch_array($ conexion,$ cur)'应该更像'$ value = mysqli_fetch_array($ res2)'因为它认为第一个参数是结果,但我不会将其作为答案发布,因为在进一步讨论之前应考虑@tadman评论。 –

回答

1

你为什么要发送的alumnos到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循环内的每个循环?除非$value有你需要在每一行内循环的数据,否则它已经被while循环循环了,并且你不需要for循环。

+0

我更改为\t <?php while($ row = mysqli_fetch_array($ res2)),但错误仍然存​​在,它表示mysqli_fetch_array需要1个参数为mysqli_result。对不起,我是新手在PHP,我只练了2周以来 –

+0

我把一个foreach,因为sql说alumnos.nombre中的数据tipe不能是一个字符串,所以我必须做一个foreach没有? –

+0

嗯,我不确定你的数据是如何构造的,但是你在while循环中有'$ value',然后你在foreach循环'$ alu'并且写下原始的'$ value'变量。让我看看你的结构,我会更新我的答案。 –