有人告訴我rowCount不安全,所以我喜歡在這裏問它,我有2個例子,並且想知道什麼是最安全最好的方法來檢查是否存在?什麼是檢查PDO是否存在的最佳方法
$sql = "SELECT count(*) FROM users WHERE username = 'administrator'";
$result = $db->prepare($sql);
$result->execute();
echo $result->fetchColumn() ? 'true' : 'false';
或
$sql = "SELECT username FROM users WHERE username = ?";
$result = $db->prepare($sql);
$result->execute(array('administrator'));
echo $result->rowCount() ? 'true' : 'false';
如果你看看手冊,有關'rowcount'函數的註釋關於這個確切的問題。對於大多數數據庫,PDOStatement :: rowCount()不會返回受SELECT語句影響的行數。相反,使用PDO :: query()發出一個SELECT COUNT(*)語句,其謂詞與您想要的SELECT語句相同,然後使用PDOStatement :: fetchColumn()來檢索將返回的行數。然後,您的應用程序可以執行正確的操作。#http://php.net/manual/en/pdostatement.rowcount.php(示例#2) – chris85
@kamalpal獲取行數並檢查是否存在是兩個不同的任務。 –
@YourCommonSense表示同意,但方法相同。 –