2012-06-20 24 views
6

Điều này khá đơn giản. EDIT: Đã cập nhật câu hỏi và thêm tiếng vang thứ tư.MySQL không tìm nạp dữ liệu chính xác? (PHP)

Đây là mã PHP:

<?php 

$ratings="3"; 
$item="Inception"; 

$query="SELECT * FROM items WHERE item = '". $item ."' LIMIT 1"; 

echo $query; 

echo "<br />"; 

$result=mysql_query($query); 

echo $result; 

echo "<br />"; 

while ($row = mysql_fetch_array($result)) { 
    $item_id = $row['item_id']; 
    echo $item_id; 
    echo "<br />"; 
} 

    $query_two = "INSERT INTO ratings (rating, item_id), VALUES (' {$ratings} ', ' {$item_id} ')"; 

    echo $query_two; 
    $sql = mysql_query($query_two); 
    mysql_close(); 
?> 

Đây là sản lượng web với tất cả các nhân vang:

SELECT * FROM items WHERE item = 'Inception' LIMIT 1 
Resource id #7 


INSERT INTO ratings (rating, item_id), VALUES (' 3 ', ' ') 

Tại sao $ item_id của tôi là trống? (hàng thứ ba bên dưới Id tài nguyên)

+0

tài nguyên Đó là từ '$ echo kết quả, ', bạn nghĩ điều gì sẽ xảy ra ở đó? – Wrikken

+0

Tôi đã đặt câu hỏi từ góc độ sai. Và chỉ trả lời câu hỏi của riêng tôi. Tại sao $ items_id trống? bởi vì nó phải là $ item_id - một lỗi đánh máy. Nhưng mọi người đã trả lời câu hỏi ban đầu của tôi. Cảm ơn! – KickingLettuce

Trả lời

5

phần mã này tạo ra nó:

$result=mysql_query($query); 

echo $result; 

Nó cho thấy Resource... vì nó là của resource loại, nó chỉ là một loại xử lý đặc biệt cho truy vấn, nó không giống như loại bình thường (string hoặc int ví dụ) , vì vậy nó không có gì có thể đọc được để in.

Nếu bạn muốn in dữ liệu từ truy vấn thì trước hết bạn phải tìm nạp dữ liệu đó.

Cũng lưu ý rằng các chức năng mysql_* không còn được dùng nữa, nó không được khuyến khích sử dụng chúng. Lưu ý từ hướng dẫn sử dụng php:

Việc sử dụng tiện ích mở rộng này không được khuyến khích. Thay vào đó, nên sử dụng tiện ích mở rộng MySQLi hoặc PDO_MySQL . Xem thêm MySQL: chọn hướng dẫn API và Câu hỏi thường gặp liên quan để biết thêm thông tin. Thay thế cho chức năng này bao gồm:

mysqli_query()

PDO :: query()

4

Điều này không liên quan gì đến ID từ cơ sở dữ liệu.

Điều này (Result#7) nói rằng tài nguyên kết quả này là tài nguyên thứ bảy được tạo bởi thực thi tập lệnh php của bạn.

2

ID Resource đến từ quá trình thực tế/đối tượng mà các truy vấn MySQL là.

để trả lại kết quả mà bạn cần:

$row = mysql_fetch_array($query); 

echo $row['item'] 
2

Bạn cần phải làm một cái gì đó với tài nguyên kết quả. Hãy thử điều này:

$result=mysql_query($query); 

//echo $result; 

$result_array = mysql_fetch_assoc($result); 

print_r($result_array); 

EDIT: Tôi thấy bạn đã cập nhật câu hỏi của mình.

Bạn nên chạy truy vấn item='Inception' trực tiếp trong MySQL để xác nhận rằng kết quả là những gì bạn mong đợi.

3

Cũng

$query_two = "INSERT INTO ratings (rating, item_id), VALUES (' {$ratings} ', ' {$item_id} ')"; 

nên

$query_two = "INSERT INTO ratings (rating, item_id) VALUES (' {$ratings} ', ' {$item_id} ')"; 

Bạn có dấu phẩy trước VALUES.

Ngoài ra, có vẻ như $item_id trống. Vui lòng kiểm tra DB cho dù bạn có dữ liệu cho item = 'Inception'.

Về, Result#7 hãy làm theo các câu trả lời khác.

+0

bắt tốt, cảm ơn! – KickingLettuce

+0

Một lý do khác có thể cho 'item_id' trống: có thể không có hàng nào phù hợp với điều kiện truy vấn. – bfavaretto

1

Bạn không thể lặp lại kết quả đơn giản. Bạn cần phải lấy kết quả để ví dụ một mảng:

while ($row = mysql_fetch_array($query)) { 
    echo $row['a_column'] . "<br />"; 
} 

hoặc một đối tượng:

while ($variable = mysql_fetch_object($query) { 
$value = $variable->a_column; 
} 
echo $value; 

Có nhiều cách nhưng điều này chỉ là hai ví dụ

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