在PHP PDO中尝试使用SELECT COUNT(*) SQL
查看是否存在主键(因此可以更新而不是插入),
当我调用函数sqlCall; fetchColumn()
时,返回0或1取决于它是否存在,但是当它返回时它总是返回false?
如果行存在与否,如何让它返回?
感谢您的帮助!!
function sqlCall($primary) {
$sql = $handler->prepare("SELECT COUNT(*) FROM WHERE ". strtolower($primary)."=:".$primary);
$sSqlParams = array(':'.$primary => $primary);
$sql->execute($sSqlParams);
if($sql->fetchColumn()==1){
return 1;
} else {
return 0;
}
break;
}
try {
$rows = sqlCall($primary);
if($rows=True){
//UPDATE SQL
} else {
//INSERT SQL
}
}
catch(PDOException $er) {
die();
}
答案 0 :(得分:1)
你正在采取这种错误的方式 - 有MySQL构造允许你这样做,而无需任何解决方法。如果您想更新记录,如果存在,如果不是,请插入它而不是使用:INSERT ... ON DUPLICATE KEY UPDATE
它是这样的:
INSERT INTO table (primary_key, field_to_update) VALUES(primary_key_value, value_to_update) ON DUPLICATE KEY UPDATE field_to_update = value_to_update
每当您的primar_key已经在数据库中时,记录将被更新,如果primary_key不存在,则将创建新记录。