2013-08-23 8 views
0

테이블에서 임의의 행을 선택하고 다른 세 행과 함께 ID를 선택하려고하는 쿼리가 있지만 id을 선택하면 오류가 발생합니다. id을 제거하면 쿼리가 정상적으로 작동합니다. 내가 id이 필요한 이유는 URL을 통해 두 번째 페이지로 전달해야하기 때문입니다. 내가 뭘 놓치고 있니?ID를 선택할 수 없습니다 mysqli

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(); 

답변

0

당신은 오류 검사를 놓치고있어.

쿼리를 준비하거나 실행할 때마다 결과를 확인해야합니다. 이 함수는 오류가 있으면 거짓을 반환합니다. r1.idr2.id :이 쿼리에서 두 id 열이 있습니다

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

: 나는 당신의 쿼리를 실행하려고하면

는 예를 들어,이 오류가 발생합니다. 열을 한정해야 쿼리 할 수있는 것이 명확합니다.

SELECT r1.id, title, ... 

그러나 더 중요한 검사 준비에 의해 반환 된 결과(). 즉 실행시 오류가 발생할 수 있기 때문에

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

같은 일이() 실행을 적용

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

(거짓 ===의 $의 STMT가) { 다이 ('준비한다면 이미'이() 실패했습니다 : '. htmlspecialchars ($ mydb -> 오류)); }'오류를 확인하지만이 경우에는 아무것도 표시되지 않습니다. – amdvb

+0

고마워 이제 작동합니다. – amdvb

관련 문제