È possibile controllare direttamente il valore restituito.
$stmt = $conn->prepare('SELECT * FROM table WHERE ID=?');
$stmt->bindParam(1, $_GET['id'], PDO::PARAM_INT);
$stmt->execute();
$row = $stmt->fetch(PDO::FETCH_ASSOC);
if(! $row)
{
die('nothing found');
}
/*
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC); // Same here
if(! $rows)
{
die('nothing found');
}
*/
Se ti stai chiedendo circa il controllo senza caricare poi semplicemente hanno MySQL restituire un 1
(oppure utilizzare il comando COUNT()
).
$sql = 'SELECT 1 from table WHERE id = ? LIMIT 1';
//$sql = 'SELECT COUNT(*) from table WHERE param = ?'; // for checking >1 records
$stmt = $conn->prepare($sql);
$stmt->bindParam(1, $_GET['id'], PDO::PARAM_INT);
$stmt->execute();
if($stmt->fetchColumn()) die('found');
[ '$ stmt-> rowCount()'] (http://php.net/manual/en/pdostatement.rowcount.php) dovrebbe essere quello di cui hai bisogno, ma controllare se è * meno di * '0' non aiuterà - sarà * uguale a *' 0' o * minore di * '1' – DaveRandom
@DaveRandom I documenti affermano che non tutti i driver causa 'SELECT' per dare un' rowCount'. A quanto pare dovresti effettivamente usare 'columnCount'. –
@arxanas Un punto equo, ma francamente eseguendo due query solo per ottenere il conteggio delle righe (come suggerisce il manuale) è una soluzione sucky. Anche '$ rowCount = count ($ rows = $ stmt-> fetchAll())' è una soluzione migliore di quella, credo - e restituirà ancora '0' se non ci sono righe. – DaveRandom