2013-05-26 36 views
6

đang gặp khó khăn với việc gán thiết kế web của tôi. Tôi đã làm theo hướng dẫn để thêm vào tính năng tìm kiếm cho trang web của mình, nhưng tôi đã gặp phải lỗi sau:Cảnh báo: mysqli_num_rows() hy vọng tham số 1 là mysqli_result, boolean được đưa ra trong

Cảnh báo: mysqli_num_rows() hy vọng tham số 1 là mysqli_result, boolean được đưa ra trong /search.php trên đường dây 31

dòng 31 là (hoặc đã)

<pre>if(mysqli_num_rows($results) >= 1)</pre> 

Đó là lỗi ban đầu. theo hướng dẫn trong các ý kiến, tôi đã kể từ khi sửa đổi mã:

<pre> 



    <?php 

//capture search term and remove spaces at its both ends if the is any 
$searchTerm = trim($_GET['keyword']); 

//check whether the name parsed is empty 
if($searchTerm == "") 
{ 
    echo "Enter the name/brand of what you're looking for."; 
    exit(); 
} 

//database connection info 
$host = "localhost"; 
$db_name = "sookehhh_shopsy_db"; 
$username = "sookehhh_shopsy"; 
$password = "xxxx"; 



//connecting to server and creating link to database 
$link = mysqli_connect($host, $username, $password, $db_name) or die('Could not connect: ' . mysqli_connect_error()); 

//MYSQL search statement 
$query = "SELECT * FROM sookehhh_shopsy_db WHERE name LIKE '%" . mysqli_real_escape_string($link, $searchTerm) . "%'"; 

// original query$query = "SELECT * FROM sookehhh_shopsy_db WHERE name LIKE '%$searchTerm%'"; 

$results = mysqli_query($link, $query); 

//added suggestion below - not sure if correct place? 
if (!$result) { 
    die(mysqli_error($link)); 
} 

/* check whethere there were matching records in the table 
by counting the number of results returned */ 
if(mysqli_num_rows($results) >= 1) 
{ 
    $output = ""; 
    while($row = mysqli_fetch_array($results)) 
    { 
     $output .= "Product Name: " . $row['name'] . "<br />"; 
     $output .= "Price: " . $row['price'] . "<br />"; 
    } 
    echo $output; 
} 
else 
    echo "There was no matching record for that item " . $searchTerm; 
?> 
</pre> 

thực hiện thay đổi cần thiết và cập nhật một lần nữa -

nay là thông báo lỗi chỉ tôi nhận được ở đây là "Bảng 'sookehhh_shopsy_db. sookehhh_shopsy_db 'không tồn tại "

Tôi giả sử rằng tôi cần phải thay đổi tên người dùng, có lẽ vì nó quá giống nhau?

Anywho, cảm ơn sự giúp đỡ của bạn cho đến thời điểm này và tôi xin lỗi vì sự thiếu hiểu biết hoàn toàn của tôi.

Tôi đã cố gắng tự dạy mình, nhưng tiếc là thời gian là sự sang trọng mà tôi không có vào lúc này.

+0

'$ db_name =" shopsy_db; '<- đã bỏ lỡ một dấu ngoặc kết thúc –

+3

Hrm. Câu hỏi liên quan để đóng này là. Quyết định, quyết định ... –

+1

bạn cũng đang sử dụng shopsy_db làm cả db và tên bảng. là trong thực tế trường hợp ... nếu nó làm cho nó để lấy trước khi puking nó có nghĩa là truy vấn được nướng.Tên có thể sai tên bảng? – Orangepill

Trả lời

15

Vấn đề là truy vấn của bạn trả lại false có nghĩa là đã xảy ra lỗi trong truy vấn của bạn. Sau khi truy vấn của bạn, bạn có thể làm như sau:

if (!$result) { 
    die(mysqli_error($link)); 
} 

Hoặc bạn có thể kết hợp nó với truy vấn của bạn:

$results = mysqli_query($link, $query) or die(mysqli_error($link)); 

Điều đó sẽ in ra lỗi lầm của mình.

Ngoài ra ... bạn cần phải khử trùng đầu vào của mình. Bạn không thể lấy đầu vào của người dùng và đưa nó vào một truy vấn. Hãy thử điều này:

$query = "SELECT * FROM shopsy_db WHERE name LIKE '%" . mysqli_real_escape_string($link, $searchTerm) . "%'"; 

Trong trả lời: Bảng 'sookehhh_shopsy_db.sookehhh_shopsy_db' không tồn tại

Bạn có chắc chắn tên bảng là sookehhh_shopsy_db? có thể nó thực sự giống như người dùng hay gì đó.

+0

Cảm ơn bạn đã thông tin hữu ích.Thật không may, tôi vẫn nhận được một thông báo lỗi.Xin vui lòng xem bài viết sửa đổi để biết chi tiết – Chrissy

+0

xin lỗi đó là xấu của tôi Tôi đã cập nhật mysqli_real_escape_string function – chrislondon

+0

Nó cần phải được mysqli_real_escape_string ($ link , $ searchTerm) – chrislondon

Các vấn đề liên quan