@vahan21

Warning: mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, bool given in?

Здравствуйте.

Подскажите, пожалуйста, в чём проблема?

if (isset($_POST['search'])) {
			        $fname = $_POST['fname'];
				$db = mysqli_connect("localhost", "root", "", "mysql2");
			        $sql = "SELECT * FROM `persons` WHERE  fname LIKE '%$fname%'";
			        $row = mysqli_query($db, $sql);
            		while($r = mysqli_fetch_assoc($row)){ ?>
		                <tr>
	                        <td><?= $r['id']; ?></td>
	                        <td><?= $r['fname']; ?></td>
	                        <td><?= $r['lname']; ?></td>
	                        <td><?= $r['age']; ?></td>
	                        <td><?= $r['gender']; ?></td>
	                        <td><?= $r['city']; ?></td>
	                    </tr>
	            	<?php
	        		}
	        	} ?>
  • Вопрос задан
  • 119 просмотров
Пригласить эксперта
Ответы на вопрос 2
@green_goo
Проблема в неспособности произвести отладку и недостаточном знании php
"SELECT * FROM `persons` WHERE fname='".$fname."'"

<?= $r['firstname']; ?>

Так fname или firstname?

PS. sql инъекций не существует, подготовленные запросы придумали масоны чтоб усложнить жизнь разработчикам. Извините, накипело
Ответ написан
Комментировать
FanatPHP
@FanatPHP
Чебуратор тега РНР
Подскажите, пожалуйста, в чём проблема?

В ДНК. Шутка.

Проблема в чудовищном пещерном коде, который до сих пор преподают во всяких хтмлакадемиях и прочих видео с ютуба.
Ну то есть основная причина - это неверное имя поля, как правильно заметили в соседнем ответе, но при правильно настроенном пхп не пришлось бы гадать. при соединении надо сказать mysqli чтобы сообщала обо всех ошибках. Ну и сам запрос надо исполняьт не так как у тебя, а правильно

Сначала делаем отдельный файл mysqli.php и пишем в него код соединения. И это не одна строчка.
Код берем отсюда, подставляем свои значения.

if (isset($_POST['search'])) {
    require 'mysqli.php';
    $stmt= $mysqli->prepare("SELECT * FROM `persons` WHERE firstname=?");
    $stmt->bind_param("s", $_POST['fname']);
    $stmt->execute();
    $result = $stmt->get_result();
    while($r = mysqli_fetch_assoc($result)){ ?>
                    <tr>
                          <td><?= $r['id']; ?></td>
                          <td><?= $r['firstname']; ?></td>
                          <td><?= $r['lastname']; ?></td>
                          <td><?= $r['age']; ?></td>
                          <td><?= $r['gender']; ?></td>
                          <td><?= $r['city']; ?></td>
                      </tr>
            	<?php
   		}
       	} ?>
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы