Możesz bezpośrednio sprawdzić wartość zwrotu.
$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');
}
*/
Jeśli proszą o sprawdzenie bez pobierania po prostu mieć MySQL zwracają 1
(lub użyć polecenia 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) powinien być tym, czego potrzebujesz, ale sprawdzenie, czy jest * mniej niż * '0' nie pomoże - będzie równe *' 0' lub * mniej niż * '1' – DaveRandom
@DaveRandom Dokumenty stwierdzają, że nie wszystkie sterowniki powoduje, że 'SELECT' daje' rowCount'. Podobno powinieneś używać 'columnCount'. –
@arxanas Sprzeczny punkt, ale szczerze mówiąc dwa pytania tylko po to, by uzyskać liczbę wierszy (jak sugeruje podręcznik), jest niefortunnym rozwiązaniem. Nawet '$ rowCount = count ($ rows = $ stmt-> fetchAll())' jest lepszym rozwiązaniem niż to, czuję - i nadal będzie skutkować '0', jeśli nie ma żadnych wierszy. – DaveRandom