2016-02-05 30 views
5

Tôi hiện đang học MySql, nhưng đã xảy ra sự cố này. mã sau đây chỉ nên truy vấn db cho mọi thứ trong bảng người dùng. nhưng nó trả về lỗi này. Error: SELECT * FROM users giúp tôi không hề. Tôi có thể chèn thành công một mục vào cơ sở dữ liệu, nhưng tôi không thể chọn từ nó. Tôi cũng đã cố gắng $sql = "SELECT * FROM ama.users"; cấu trúc DB của tôi làLỗi được sản xuất từ ​​mysql chọn

ama 
|-users 

bất kỳ trợ giúp nào sẽ được đánh giá cao.

$conn = new mysqli($_ENV['OPENSHIFT_MYSQL_DB_HOST'],$_ENV['OPENSHIFT_MYSQL_DB_USERNAME'], $_ENV['OPENSHIFT_MYSQL_DB_PASSWORD'], 'ama'); 
// Check connection 
if ($conn->connect_error) { 
    die("Connection failed: " . $conn->connect_error); 
} 

$username = "Doe"; 
$password = "johnexample"; 
$sql = "SELECT * FROM users"; 
if ($conn->query($sql) === TRUE) { 
    echo "New record created successfully"; 
} else { 
    echo "Error: " . $sql . "<br>" . $conn->error; 
} 

$conn->close(); 
+0

xin vui lòng thêm thông báo lỗi hoàn chỉnh – Jens

+0

@Jens đó là thông báo lỗi hoàn chỉnh nó mang lại cho tôi .. nếu nó cho nhiều id có thể gỡ lỗi tốt hơn. – hurnhu

+1

Làm === TRUE sẽ không hoạt động trên một lựa chọn, bởi vì nó trả về một đối tượng tài nguyên hoặc null. Vì vậy, == TRUE nên làm việc mặc dù. === là một loại kiểm tra nghiêm ngặt, có nghĩa là nó phải là một boolean, và một đối tượng tài nguyên không phải là một boolean. – Asperon

Trả lời

5

Từ PHP Manual:

mysqli :: truy vấn sẽ trả đối tượng trong sự thành công và trả về false trong thất bại.

Vì vậy, bạn có thể sử dụng nó mà không kiểm tra kiểu dữ liệu (===):

if ($conn->query($sql)) { 
    echo "New record created successfully"; 
} else { 
    echo "Error: " . $sql . "<br>" . $conn->error; 
} 

Để hiểu rõ hơn bạn có thể dùng var_dump() và kiểm tra những gì bạn nhận được như:

var_dump($conn->query($sql)); 
1

Documentation nói:

Returns FALSE trên thất bại. Đối với các truy vấn SELECT, SHOW, DESCRIBE hoặc EXPLAIN thành công mysqli_query() sẽ trả về một đối tượng mysqli_result. Đối với các truy vấn thành công khác mysqli_query() sẽ trả về TRUE.

Vì vậy, làm một cái gì đó giống như

$result= $db->query($sql); 

và sau đó kiểm tra các hàng trong $ result

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