Xin chào các trại viên! <3
Vì vậy, tôi chưa quen với việc viết mã, tôi đã viết mã này để tạo trường tìm kiếm và tôi vẫn gặp sự cố này. Ai có thể giúp tôi không
mã của tôi :
<?php include 'header.php'; ?>
<h1>Search Page</h1>
<div class="article-container">
<?php
if ($_POST['submit-search']){
$Search = mysqli_real_escape_string($conn,$_POST['search']);
$sql = "SELECT * articals WHERE a_title LIKE '%$search%' OR a_artical LIKE '%$search%'OR a_author LIKE '%$search%' a_date LIKE '%$search%' ";
$result = mysqli_query($conn,$sql);
$queryReslut = mysqli_num_rows($result);
if ($queryReslut > 0 ) {
while ($row = mysqli_fetch_assoc($reslut)) {
echo "<div>
<h3>".$row['a_title']."</h3>
<p>". $row['a_text']."</p>
<p>". $row['a_date']."</p>
<p>". $row['a_author']. "</p>
</div>";
}
} else if ($queryReslut = 0) {
echo "There are no results matching your search!";
}
}
?>
Lỗi tôi nhận được:
Cảnh báo : mysqli_num_rows() dự kiến tham số 1 là mysqli_result, bool được đưa ra trong C:\Tệp chương trình\Ampps\www\test\searchfield\index.php Trực tuyến 15
Cảm ơn bạn rất nhiều vì đã phát lại tốc độ thực sự của bạn nhưng tôi không thực sự hiểu được, bạn có thể giải thích được không?
Hãy nhìn vào Giá trị trả về phần của trang này, trên tài liệu của php: https://www.php.net/manual/en/mysqli.query.php
Đây là vấn đề: có lỗi trong câu lệnh SQL của bạn, điều này gây ra mysql_query()
thất bại. Khi nó không thành công, nó trả về một Boolean false
giá trị, chứ không phải là mysqli_result
trả về giá trị mà mysql_num_rows()
đang tìm kiếm.
Sửa lỗi SQL hoặc xử lý lỗi đến từ mysql_query()
cuộc gọi.
3 lượt thích
Cảm ơn ngài rất nhiều!
tôi sẽ cố gắng tìm ra nó
Không được thử nghiệm, nhưng nó sẽ giúp ích.
<?php
if ($_POST['submit-search']) {
$conn = new mysqli("localhost", "my_user", "my_password", "my_db");
// Check connection
if ($conn->connect_error) {
echo "Failed to connect to MySQL: " . $conn->connect_error;
exit();
}
$search = mysqli_real_escape_string($conn,$_POST['search']);
$sql = "SELECT * FROM articals WHERE a_title LIKE '%$search%' OR a_artical LIKE '%$search%' OR a_author LIKE '%$search%' OR a_date LIKE '%$search%' ";
$result = mysqli_query($conn, $sql);
$resultNrows = mysqli_num_rows($result);
if ($resultNrows > 0 ) {
while ($row = mysqli_fetch_assoc($result)) {
echo "<div>
<h3>".$row['a_title']."</h3>
<p>". $row['a_text']."</p>
<p>". $row['a_date']."</p>
<p>". $row['a_author']. "</p>
</div>";
}
} else if ($resultNrows = 0) {
echo "There are no results matching your search!";
}
mysqli_free_result($result);
mysqli_free_result($resultNrows);
}
?>
2 lượt thích
nó đã làm việc!
nhưng tôi không nhận được các bài báo không có trong trang chỉ mục hoặc trong trang bài báo nơi nó hiển thị sau khi tìm kiếm
tôi chưa quen với tất cả những điều này, hơi khó một chút nhưng tôi đang bị ném
Cảm ơn bạn rất nhiều!
Lỗi trong SQL chỉ là ở phần cuối, tùy chọn cuối cùng không được dẫn dắt bởi OR. Khi SQL đã được sửa, nó sẽ hoạt động tốt. Mặc dù vậy, sẽ không phải là một ý tưởng tồi nếu kiểm tra lỗi:
$result = mysqli_query($conn, $sql);
if ($result == false){
// Here, you have an error, handle it!
} else {
// Here, we KNOW that result isn't false, so it's safe!
$resultNRows = mysqlI_num_rows($result);
// ... and on and on.
1 lượt thích
Cảm ơn lời khuyên của bạn, tôi sẽ cố gắng hết sức và tôi đã quên kiểm tra lỗi trước rồi tiếp tục viết mã, cảm ơn bạn rất nhiều!
Tôi nghĩ rằng bạn đã quên “HOẶC” hoặc có thể và “VÀ” bên trong truy vấn của bạn ngay trước a_date ?
1 lượt thích
Cú bắt tuyệt vời, @romi_devx – đó chính xác là lỗi mà tôi đã gợi ý với “có lỗi trong SQL của bạn”. Chính xác tại sao truy vấn không thành công.
Điều đó nói rằng, đó là một ví dụ tuyệt vời về lý do tại sao chúng ta cần kiểm tra lỗi trong mã của mình…