사용자가 제품 목록을 검색하고 수량이 미리 입력 된 텍스트 상자가있는 페이지에이 목록을 표시합니다. 사용자는이 양을 변경할 수 있으며 양식은이 데이터를 업데이트 페이지로 전송합니다. 나는 .. 데이터베이스 업데이트를 수행하려면 다음 문을 사용하고MySQL은 0으로 값을 업데이트하지 않습니다.
$sql = "UPDATE reservations SET quantity=? WHERE tableID= ?";
이 사용자가 텍스트 상자에 0을두고 다음 업데이트가 바로이 값을 생략하는 경우를 제외하고 모든 값에 대해 완벽하게 작동하고 기존에 그것을 잎 하나. 데이터베이스에 직접 들어가서 아무런 문제없이 값을 수동으로 0으로 변경할 수 있지만 웹 기반의 진술로 보인다. INT로 설정되었고 VARCHAR도 시도했지만 어느 행운도 없었습니다. SQL 문이 0 값을 무시하게 만드는 원인은 무엇입니까?
if ($quantity) $stmt->execute(array($quantity, $id));
0이 false로 평가 때문에 문을 건너 뛰고이 경우 $quantity
가 0 인 경우 명령을 실행
전체 업데이트 코드가
$opt = array(
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
);
$conn = new PDO($dsn, $username, $password, $opt);
$sql = "UPDATE reservations SET quantity=? WHERE tableID= ?";
$stmt = $conn->prepare($sql);
foreach($_POST["Quantity"] as $id => $quantity) {
if ($quantity) $stmt->execute(array($quantity, $id));
}
이 쿼리에 매개 변수를 삽입하는 방법을 보여주십시오. – Itay
값에 백틱이나 따옴표를 사용하고 있습니까? 정수 인 경우에는 필요가 없습니다. – Sablefoste
또한 테이블의 스키마를 제공합니다. 즉, 'desc reservations' –