Несколько предложений Где вызывают логическую ошибку в php [duplicate]

0

Когда я пытаюсь найти что-либо в поисковом блоке backlog, прежде чем я отправлю свои значения, вы получите 2 ошибки, которые выглядят следующим образом:

Предупреждение: mysqli_num_rows() ожидает, что параметр 1 будет mysqli_result, boolean задан в C:\xampp\htdocs\SOPHOMORE\coursereginfo.php в строке 53

Предупреждение: mysqli_fetch_array() ожидает, что параметр 1 будет mysqli_result, boolean задан в C:\xampp\htdocs\SOPHOMORE\coursereginfo.php в строке 54

<!doctype html>  
<html>  
<?php include'abcadmin.css' ?> 

<body>  
    <br>
    <br>
    <br>
    <br>
    <h4><object align="right" width="190"><a href ="studentlogin.php" onclick="alert('You have logged out successfully!!;') <?php session_destroy(); ?>">Logout</a></object></h4>
    &nbsp;
    &nbsp;
    &nbsp;
    &nbsp;
    <br>
    <br>
    <br>
    <br>
     <center><h1>Course Information</h1></center>  
 &nbsp;
&nbsp;

<form method="POST">  
<center><h4>Backlog(Subject Code):</label>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <input type="text" name="bl1"><br><br><br>
<center><input type="submit" value="Submit" name="submit" /> </center>

</form>  

<?php


    session_start();
    global $un,$pw,$stuname,$stusurname,$stuemail,$cou,$backlog1,$backlog2,$backlog3,$backlog4,$backlog,$x;
    $sapid=$_SESSION['adminstusapid'];
    $con=mysqli_connect('localhost','root','') or die(mysqli_error());  
    mysqli_select_db($con,'sophomore') or die("cannot select DB");
    $query=mysqli_query($con,"SELECT * FROM student_subjects WHERE SAPID='".$sapid."'");
    $query1=mysqli_query($con,"SELECT * FROM student_registration WHERE sap_id='".$sapid."'" );
    $numrows=mysqli_num_rows($query);
    $numrows1=mysqli_num_rows($query1);
    $sapidinfo=array();

    if(isset($_POST["submit"])){

    $search=$_POST['bl1'];
    $query2=mysqli_query($con,"SELECT * FROM sbmp_subjects WHERE subject_code='".$search."'" );
    $numrows2=mysqli_num_rows($query2);
    while($row2 = mysqli_fetch_array($query2))
    { 
      $backlog=$row2['subject'];
    }
    $query3=mysqli_query($con,"SELECT * FROM student_subjects WHERE (Subject1='".$backlog."' OR Subject2='".$backlog."' OR Subject3='".$backlog."' OR Subject4='".$backlog."' OR Subject5='".$backlog."' OR Subject6='".$backlog."' OR Subject7='".$backlog."'" );
    $numrows3=mysqli_num_rows($query3);
    while($row3 = mysqli_fetch_array($query3))
    { 
      $sapidinfo[]=$row3;
    }
    echo '<table class="a" align="center" border="1">';
    echo '<tr>';
    echo '<td>';
    echo '<h4>';
    echo "SAP ID";
    echo '</h4>';
    echo '</td>';
    echo '</tr>';
    echo '</table>';
    echo "<br>";

for($x=0; $x<$numrows3; $x++)
{
    echo '<table class="e" align="center" border="1">';
    echo '<tr>';
    echo '<td>';
    echo '<h4>';
    echo $sapid[$x];
    echo '</h4>';
    echo '</td>';
    echo '</tr>';
    echo "<br>";

}
}

?>

</body>
</html>
  • 0
    а вы гуглили эти ошибки и пытались их понять? ... а почему тэг CSS?
  • 0
    Примечание: никогда не объединяйте строки SQL. Используйте параметры. Это сделает вашу жизнь намного проще. После этого добавьте проверку ошибок.
Теги:

1 ответ

0

Я думаю, что вы запросили ошибку. От php.net:

Возвращает FALSE при ошибке. Для успешных запросов SELECT, SHOW, DESCRIBE или EXPLAIN mysqli_query() вернет объект mysqli_result. Для других успешных запросов mysqli_query() вернет TRUE.

Вы должны проверить код выхода перед применением mysqli_num_rows и mysqli_fetch_array. Также из php.net:

if ($result = mysqli_query($link, "SELECT Code, Name FROM Country ORDER BY Name")){

$row_cnt = mysqli_num_rows($result);

printf("El resultado tiene %d filas.\n", $row_cnt);

mysqli_free_result($result);}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню