내 스크립트에서 두 개의 쿼리를 실행 중입니다. room.php
. 모두 MySQLi 준비된 문을 사용하여, 다음과 같이 자신의 코드는 다음과 같습니다 두 번째 쿼리입니다MySQLi가 진술 문을 준비하지 못했습니다.
Fatal error: Call to a member function bind_param() on a non-object in C:\wamp\www\room.php on line 24
:
/* Get room name */
$stmt = $mysqli->prepare('SELECT name FROM `rooms` WHERE r_id=?');
$stmt->bind_param('i', $roomID);
$stmt->execute();
$stmt->bind_result($roomName)
/* Add this user to the room */
$stmt = $mysqli->prepare('INSERT INTO `room_users` (r_id, u_id) VALUES (?, ?)');
$stmt->bind_param('ii', $roomID, $_SESSION['userID']);
$stmt->execute();
내가 스크립트를 실행하면,이 오류가 발생합니다. 스크립트에서 첫 번째 쿼리를 제거하면 모든 것이 정상적으로 실행됩니다. 마찬가지로 두 번째 쿼리를 제거합니다. 그래서 $stmt
객체를 재사용하기 때문에 문제가 있다고 생각하게됩니다. $stmt2
을 사용하여 두 번째 쿼리를 시도하면 여전히 오류가 발생합니다.
모든 데이터베이스 테이블과 필드가 있으므로 쿼리에 문제가 없습니다.
@ 빌을 : 당신은 절대적으로 정확했다, 당신의 편집 요청이 거부 된 이유를 모른다 .... – VolkerK
는 두 번째 부분은 나를 위해 키 없었다. '$ mysqli-> prepare'는 false를 리턴했지만'$ mysqli-> error'는 비어있었습니다; 이전 문장에'$ stmt-> close'를 추가하여 이것을 수정했습니다. – Clamburger