检查 PHP 是否存在 SQL 行
2022-08-31 00:14:46
我正在将MySQL与PHP一起使用,我需要做这样的事情(伪代码):
if (sql row exists where username='bob')
{
// do this stuff
}
我正在将MySQL与PHP一起使用,我需要做这样的事情(伪代码):
if (sql row exists where username='bob')
{
// do this stuff
}
如果要使用 PDO(PHP 数据对象),
请使用以下代码:
$dbh = new PDO("mysql:host=your_host_name;dbname=your_db_name", $user, $pass);
$stmt = $dbh->prepare("SELECT username from my_table where username = ':name'");
$stmt->bindParam(":name", "bob");
$stmt->execute();
if($stmt->rowCount() > 0)
{
// row exists. do whatever you want to do.
}
Sayem的答案有最多的赞成票,但我认为关于PDO是不正确的。
来自 PHP 文档:
对于大多数数据库,PDOStatement::rowCount() 不返回受 SELECT 语句影响的行数。相反,请使用 PDO::query() 发出与预期 SELECT 语句具有相同谓词的 SELECT COUNT(*) 语句,然后使用 PDOStatement::fetchColumn() 检索将返回的行数。
$sql = "SELECT COUNT(*) FROM fruit WHERE calories > 100";
if ($res = $conn->query($sql)) {
/* Check the number of rows that match the SELECT statement */
if ($res->fetchColumn() > 0) {
/* Issue the real SELECT statement and work with the results */
$sql = "SELECT name FROM fruit WHERE calories > 100";
foreach ($conn->query($sql) as $row) {
print "Name: " . $row['NAME'] . "\n";
}
}
/* No rows matched -- do something else */
else {
print "No rows matched the query.";
}
}
$res = null;
$conn = null;