Im пытается вставить два значения в таблицу, если выполнено одно условие, а другое не выполнено.Вставка значений в таблицу в условиях
Я нашел учебное пособие по этому вопросу, но я не могу заставить его работать.
В учебном пособии объясняется, как создать простую кнопку, похожую на PHP, и имеет две таблицы: articles
и articles_likes
.
articles
имеет два столбца: идентификаторов и название.
articles_likes
имеет три колонки: идентификаторов, пользователь и статья.
код в учебнике выглядит следующим образом:
$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
");
Теперь в первую очередь, им с помощью ПДО с $query = $pdo->prepare(" .. ");
и вопросительными знаками плюс bindValue()
, чтобы избежать инъекции SQL, и все, что работает нормально с другими операторами SQL , но этот, похоже, не работает.
Я искал синтаксис INSERT INTO .. SELECT .. FROM
, и W3schools объясняет это как копирование значений из одной таблицы в другую. Итак, как это работает даже в учебнике? articles
имеет совершенно другую структуру, и он вставляет переменные $ в оператор SELECT
.
Может ли кто-нибудь объяснить, почему это работает в первую очередь и как это будет работать в PDO?
Edit:
Вот мой собственный код (я добавил $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
@Andomar Спасибо, добавлено! – JKunstwald
Спасибо, не могли бы вы также добавить лучшее описание проблемы, чем «кажется, не работает»? Есть ли сообщение об ошибке? – Andomar