我試圖插入兩個值到表中,如果滿足一個條件而另一個不滿足。在條件下將值插入表
我已經找到關於此事的教程,但我似乎無法讓它工作。
本教程介紹瞭如何創建一個簡單的PHP按鈕,並且有兩個表格articles
和articles_likes
。
articles
有兩列:ID和標題。
articles_likes
有三列:ID,用戶和文章。
本教程中的代碼如下所示:
$db->query("
INSERT INTO articles_likes (user, article)
SELECT {$_SESSION['user_id']}, {$id}
FROM articles
WHERE EXISTS (
SELECT id
FROM articles
WHERE id = {$id})
AND NOT EXISTS (
SELECT id
FROM articles_likes
WHERE user = {$_SESSION['user_id']}
AND article = {$id})
LIMIT 1
");
現在首先使用PDO與$query = $pdo->prepare(" .. ");
和問號加bindValue()
IM避免SQL注入,以及所有爲工作的罰款與其他SQL語句,但這個似乎並不奏效。
我用GOOGLE搜索INSERT INTO .. SELECT .. FROM
語法,而W3schools解釋爲將數值從一個表複製到另一個表。那麼這在教程中如何工作呢? articles
具有完全不同的結構,並且他將$變量插入到SELECT
聲明中。
任何人都可以解釋爲什麼這項工作在第一個地方,以及它如何在PDO工作?
編輯:
這是我自己的代碼(我已經添加了$value
,因爲我的代碼是二進制的評價,而不是像):
global $pdo;
$query = $pdo->prepare("
INSERT INTO quote_ratings (user_ip, quote_id, value)
SELECT ?, ?, ?
FROM posts
WHERE EXISTS (
SELECT id
FROM posts
WHERE id = ?)
AND NOT EXISTS (
SELECT id
FROM quote_ratings
WHERE user_ip = ?
AND quote_id = ?)
LIMIT 1
");
$query->bindValue(1, $user_ip);
$query->bindValue(2, $quote_id);
$query->bindValue(3, $rating);
$query->bindValue(4, $quote_id);
$query->bindValue(5, $user_ip);
$query->bindValue(6, $quote_id);
$query->execute();
如果您需要SQL語法幫助,請發佈有問題的SQL查詢,而不是本教程中的查詢。 – Andomar 2014-08-30 12:02:29
@Andomar謝謝,補充! – JKunstwald 2014-08-30 12:06:59
謝謝,您是否還可以添加更好的問題描述而不是「看起來不起作用」?是否有錯誤訊息? – Andomar 2014-08-30 12:14:43