我使用http://php.net/页面代码与PDO进行协调。我添加了EXIST术语。如何检查EXISTS是否返回false?如果不可行,如何检查select是否返回空结果?
try {
$conn = new PDO("mysql:host=$servername;dbname=xxxx", $username, $password);
// set the PDO error mode to exception
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo "Connected successfully";
getUsers($conn,$po[0]);
$conn = null;
}
catch(PDOException $e)
{
echo "Connection failed: " . $e->getMessage();
}
function getUsers($con,$po){
$sql = "SELECT * FROM usuarios WHERE EXISTS (SELECT id FROM webs WHERE name='$po')";
foreach ($con->query($sql) as $row) {
print $row['nombre'] . "\n";
print $row['id'] . "\n";
print $row['email'] . "\n";
}
}
答案 0 :(得分:0)
如果您将使用这样,那么它将起作用,并且不需要检查条件
$rows = $con->query($sql);
if($rows){
foreach ($rows as $row) {
print $row['nombre'] . "\n";
print $row['id'] . "\n";
print $row['email'] . "\n";
}
}
答案 1 :(得分:0)
WHERE EXISTS
根据键SELECT
EXISTS
结果(行)
因此,要检查EXISTS
是否失败,您必须使用rowCount
,它返回查询返回的行数:
$result = $con->query($sql);
if( $result->rowCount() > 0 ) echo "EXISTS";
else echo "NOT EXISTS";
(编辑:)
正如下面的评论中所指出的,rowCount()
在这种情况下工作正常,并且始终使用mySQL数据库结构,但是«不保证所有数据库结构的这种行为:使用sqLite,即它不是的工作原理。