Php pdo if语句中的错误

Php pdo if语句中的错误,php,pdo,Php,Pdo,我想添加到数据库用户id和fav_id。但前提是它们一起还没有被记录。 我在代码中做了一些错误的事情,因为它一直在添加它。 为什么会这样 <?php include '../connect.php'; $fav_id = $_POST['fav_id']; $user_id = $_POST['user_id']; $number = $pdo-> query('SELECT COUNT(*) FROM favourites WHERE user_id = :user_id AN

我想添加到数据库用户id和fav_id。但前提是它们一起还没有被记录。 我在代码中做了一些错误的事情,因为它一直在添加它。 为什么会这样

<?php
include '../connect.php';

$fav_id = $_POST['fav_id'];
$user_id = $_POST['user_id'];

$number = $pdo-> query('SELECT COUNT(*) FROM favourites WHERE user_id = :user_id AND fav_id = fav_id ');

if ($number == 0) {
$pdo->exec("INSERT INTO `favourites` (`fav_id`, `user_id`) VALUES (" . $fav_id . "," . $user_id . ")");
}
else die();

?>

使用
fetchColumn()

另外,我认为你应该准备一份声明:user id和fav_id

<?php
include '../connect.php';

$fav_id = $_POST['fav_id'];
$user_id = $_POST['user_id'];

$number = $pdo-> prepare('SELECT COUNT(*) FROM favourites WHERE user_id = :user_id AND fav_id = :fav_id ');

$number ->execute(array(':user_id' => $user_id,':fav_id'=>$fav_id));

if ($number ->fetchColumn() == 0) {
$pdo->exec("INSERT INTO `favourites` (`fav_id`, `user_id`) VALUES (" . $fav_id . "," . $user_id . ")");
}
else die();

?>


您是否在$number上尝试了var_dump?查询返回PDOStatement对象,而不是数字您的
count
语句很奇怪。您在哪里分配
:用户id
fav\u id
?还有,为什么一个有
而另一个没有?@JAL它显示“bool(false)”哦,这意味着查询失败。你没有看到任何错误吗?尝试添加$pdo->setAttribute(“pdo::ATTR_ERRMODE”,pdo::ERRMODE_异常);哦,拜托,这里可以返回FALSE为什么有两个分号<代码>'fav_id'=>$fav_id))@Rasclatt让我来修复它
execute()
数组不是有冒号吗<代码>数组(':user\u id'=>$user\u id':fav\u id'=>$fav\u id)这非常有效!谢谢:)我必须在PDO上做更多的工作。与easy mysql相比,我很难理解PDO