실행문 중 PDO가 영향을 받는 행이었습니다.
PDO에 대해 exec 문을 사용하는 방법을 많이 찾았지만 도움이 될지 모르겠습니다.제가 알기로는 준비된 문장은 execute() 함수를 사용해야 합니다.사용자 입력의 데이터로 행을 업데이트하고 있으므로 query() 호출 대신 준비된 문을 사용하고 싶습니다.
내 코드는 다음과 같습니다.
$dbh = buildDBConnector();
$sql = "UPDATE tb_users
SET authState=1
WHERE id = ? AND authPass = ?";
$q = $dbh->prepare($sql);
$f = $q->execute(array($id,$authPass));
if($f){
echo '<br />Success<br />';
}else{
echo '<br />Failure<br />';
}
문제는 쿼리 자체가 오류가 없고 정상적으로 실행되므로 $f에 저장하는 데 실패하지 않는다는 것입니다.하지만 실제로 업데이트할 행을 찾아서 성공적으로 업데이트했는지 알아야 합니다.즉, 영향을 받은 행이 필요합니다.구글 등을 검색할 때는 계속해서 exec 문이 나오는데, 내가 알기로는 exec은 준비된 문이 아닌가요?좋은 의견이라도 있나?
Try.Prepared 문은 해당 방법을 통해 영향을 받는 행의 수를 반환합니다.
참고: 동일한 값으로 표를 업데이트하는 경우rowCount()
항상 돌아올 것입니다.0
이것은 정상적인 동작입니다.다음 속성을 가진 PDO 개체를 만들어 PHP 5.3부터 직접 변경할 수 있습니다.
<? php
$p = new PDO($dsn, $user, $pass, array(PDO::MYSQL_ATTR_FOUND_ROWS => true));
?>
그rowCount()
그러면 업데이트 검색기가 실제로 발견하거나 검색한 행 수를 반환합니다.
$q->rowCount()
마지막(실행된) SQL 문의 영향을 받는 행 수를 반환합니다.$q
종종 불리는 준비된 진술입니다.$stmt
.
따라서 이 문서를 읽는 대부분의 사용자는 다음과 같은 것을 원할 수 있습니다.
$pdo = new PDO($dsn, $username, $password);
$sql = "UPDATE tb_users SET authState=1 WHERE id = ? AND authPass = ?";
$stmt = $pdo->prepare($sql);
$stmt->execute(array($id, $authPass));
if ($stmt->rowCount()){
echo 'Success: At least 1 row was affected.';
} else{
echo 'Failure: 0 rows were affected.';
}
PDO의rowCount()
준비된 문에서 영향을 받는 행을 반환합니다.UPDATE
,DELETE
또는INSERT
진술.그렇지 않으면 반환된 행 수를 반환합니다.SELECT
진술.
파라비타 케 라 라 라 라 라 라 라 라 라 라디라시온 레토른 0, 데베라시 아냐디르 골 결승전 데 라 카데나 데 코넥시온.코넥시온.php
<?php $cadena = "$manejador:host=$servidor;dbname=$dbname";
$cnx = new PDO($cadena, $usuario, $pass, array(PDO::MYSQL_ATTR_FOUND_ROWS => true));
?>
class.class.class.
<?php
...
global $cnx;
$pre = $cnx->prepare($sql);
$pre->execute($parametros);
$rpta = $pre->rowCount();
return $rpta;
?>
PDO rowCount()는 항상 0을 반환하기 때문에 단일 UPDATE 쿼리가 있는 MySQL에서는 쓸모가 없다고 생각합니다.
ex:
TABLE{id=1, col1="A"}
UPDATE TABLE SET col1="AA" WHERE id=1;
rowCount will return 0;
also
UPDATE TABLE SET col1="AA" WHERE id=999;
rowCount will return 0;
so rowCount() is useless in this case.
이 쿼리로 아직 테스트하지 않았습니다. UPDATE TABLE SET col1="AA"
언급URL : https://stackoverflow.com/questions/10522520/pdo-were-rows-affected-during-execute-statement
'programing' 카테고리의 다른 글
텍스트 깜박임 jQuery (0) | 2023.08.28 |
---|---|
Spring MVC 애플리케이션에서 서비스 계층에 사용하는 명명 규칙은 무엇입니까? (0) | 2023.08.28 |
c99와 c11의 차이 (0) | 2023.08.28 |
Floatdoctor는 명령 프롬프트나 PowerShell 창에서 작동하지 않습니까? (0) | 2023.08.28 |
접두사와 와일드카드를 사용하여 데이터베이스에 액세스할 수 있습니까? (0) | 2023.08.28 |