2017-05-24 27 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'變量。讓我看看你的結構,我會更新我的答案。 –