意外的雙刀片我有一個like
表同類產品在我的網站的客戶。於MyISAM
的問題是,我用這個表:誰喜歡
CREATE TABLE IF NOT EXISTS `likes` (
`id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT,
`user` varchar(40) NOT NULL,
`post` int(11) UNSIGNED NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 AUTO_INCREMENT=1 ;
用戶,職位是產品ID。
像按鈕發送Ajax請求的PHP:
session_start();
$user = $_SESSION["user"];
$pinsid=$_POST['id'];
$stmt = $mysqli_link->prepare("SELECT * FROM likes WHERE post=? AND user=?");
$stmt->bind_param('is', $pinsid, $user);
$stmt->execute();
$result = $stmt->get_result();
$stmt->close();
$chknum = $result->num_rows;
if($chknum==0){
$stmt = $mysqli_link->prepare("INSERT INTO likes (user, post) VALUES (?,?)");
$stmt->bind_param('si', $user, $pinsid);
$stmt->execute();
$stmt->close();
$response = 'success';
}
echo json_encode($response);
我的問題是,我有相同的人如雙刀片。例如:
1 josh 5
2 josh 5
但如果MySQL引擎被設置爲InnoDB的,如果我將其更改爲MyISAM的我只有1插入時纔會發生。
發生了什麼事?我該怎麼做才能使它正常工作?這樣做的
我覺得很難相信需要在
post
索引 - 你確定你的用戶和帖子的ID值是一致的,沒有多餘的空格等? –在'(user,post)'上設置唯一索引! – yergo
我認爲主要問題是ajax,即發送多個請求!但在php/sql中解決它會很好。我怎樣才能爲用戶和帖子設置唯一的索引? –