문제
동일한 전화 번호와 날짜의 등록이있는 경우 계산을하려고합니다. 이는 같은 날짜 (시간)에 두 예약을 등록하지 못하도록하기위한 것입니다. 내 문제는 데이터베이스에 동일한 세부 정보가 등록되어 있지 않기 때문에 쿼리가
0
을 반환 할 것으로 기대한다는 것입니다. 결과는
1
입니다. 어떤 정보가 이미 데이터베이스에 있음을 나타내지 만 그렇지 않습니다. 내 생각 엔 현재 쿼리 이전에 실행중인 쿼리와 관련이 있다는 것입니다. 내가 성명을 닫아야하는지 궁금 하네. 내가 문
$stmt->close()
을 종료하지만 아무 소용에 노력했다
노력이 무엇
. 나는 이전 쿼리의 변수를 재사용하는 대신 새로운 변수를 만들려고했지만 그 중 하나는 작동하지 않았다. 나는 거기에 같은 세부 사항으로 등록이 없는지 확인하기 위해 데이터베이스를 3 번 검사했고, 나는 데이터베이스에 아무 것도 없다고 100 % 확신합니다.
코드
여기 내 코드입니다. 나는 문제가 첫 번째 쿼리 부분에 있다고 생각한다.
$query = "SELECT count(*) as reservation_amount FROM reservation WHERE `date`= ?";
$stmt = $db->prepare($query);
$stmt->bind_param("s", $datetime);
$stmt->execute();
$stmt->bind_result($count);
while($row = $stmt->fetch()){
$res_count = $row; //res_count is 1 in this case. I'm thinking I need to close something here?
}
$query = "SELECT count(*) as registered FROM reservation WHERE `number` = ? and `date`= ?";
$stmt = $db->prepare($query);
$stmt->bind_param("is", $number, $datetime);
$stmt->execute();
$stmt->bind_result($count);
while($row = $stmt->fetch()){
$registered = $row; //outputs 1 but I'm expecting 0
}
입력
datetime = 2014-12-28 17:00:00
number = 0612345678
데이터베이스
데이터베이스는 다음과 같은 기록이 포함되어
id name surname number email date amount
5 Henk Houtman 9060666 [email protected] 2014-12-28 17:00:00 1
오류를
오류가 없습니다.
'number = 0612345678'은'int'가 다른 소수 값으로 변환 될 것입니다. –
'$ statement-> fetch()'는 부울 true를 반환하고 1로 평가됩니다. 아마도'store_result()'와'bind_result()'를 원할 것이다. http://php.net/manual/en/mysqli-stmt.bind-result.php –