php pdo sql如果行存在则返回

时间:2016-07-19 00:15:36

标签: php mysql pdo

在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();
}

1 个答案:

答案 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不存在,则将创建新记录。