无法选择id mysqli

时间:2013-08-23 23:29:07

标签: php mysqli

我有一个查询从表中选择随机行,我尝试选择id和另外三行,但是当我选择id进行选择时,它会给我错误。如果我删除id查询工作正常。我需要id的原因是因为我需要它通过url传递到第二页。我错过了什么?

Call to a member function execute() on a non-object 

查询:

   $stmt = $mydb->prepare("SELECT  id, title, price, image_one
        FROM products AS r1 JOIN
           (SELECT (RAND() *
             (SELECT MAX(id)
         FROM products )) AS id)
        AS r2
 WHERE r1.id >= r2.id and title != ''
 ORDER BY r1.id ASC
 LIMIT 1 ");
 $stmt->execute();

1 个答案:

答案 0 :(得分:0)

您错过了错误检查。

每次准备或执行查询时,都应检查结果。如果出现错误,该函数将返回 false

例如,如果我尝试运行您的查询,我会收到此错误:

ERROR 1052 (23000): Column 'id' in field list is ambiguous

此查询中有两个id列:r1.idr2.id。您需要对列进行限定,以便明确指出要查询的列。

SELECT r1.id, title, ...

但更重要的是,检查prepare()返回的结果

$stmt = $mydb->prepare(...);
if ($stmt === false) {
    trigger_error($mydb->error, E_USER_ERROR);
}

同样的事情适用于execute(),因为这会导致执行时错误:

if ($stmt->execute() === false) {
    trigger_error($stmt->error, E_USER_ERROR);
}