Передача цитируемого параметра в PDO подготовленного оператора - PullRequest
0 голосов
/ 27 мая 2020

Я проверил другие вопросы, PHP и документацию PDO и многие другие примеры, но я чувствую себя застрявшим, вероятно, потому что я только начинаю с PHP и MySQL.

Я пытаясь сначала проверить, существует ли строка с помощью оператора SELECT, а затем, если строка существует DELETE, это.

Однако запрос не выполняется, я использую MySQL 8 на Ubuntu 18 , и запросы работают только с одинарными кавычками после предложения WHERE:

SELECT bookname FROM libri WHERE bookname LIKE "test.pdf";
DELETE FROM libri WHERE bookname LIKE "test.pdf";

Однако похоже, что я не могу воспроизвести его с помощью подготовленных операторов:

$sql = "SELECT bookname FROM libri WHERE bookname LIKE :deleteTerm;";
$stmt = $pdo->prepare($sql);
$stmt->bindValue(':deleteTerm', $deleteKey); 
$stmt->execute();

Я установил $deleteKey как $deleteKey = $_POST['delete']; и пытаюсь добавить одинарные кавычки как $stmt->bindValue(':deleteTerm', "'".$deleteKey."'");, это не работает. Также попытался установить кавычки непосредственно в имя переменной: $deleteKey = "'".$_POST['delete']."'"; и используя подготовленный оператор выше, но все еще не работает.

Я что-то упускаю или что-то не так? Может, надо использовать другой запрос?

1 Ответ

0 голосов
/ 27 мая 2020

«Выбрать» часть совершенной вами транзакции не требуется. потому что вы имеете в виду удалить его, если он существует. вы пытаетесь удалить его в следующем разделе. если вы действительно запустите вторую часть напрямую, она удалит ее, если она уже существует. Я также рекомендую вам попробовать это в области когтей.

$sql = " DELETE FROM libri WHERE bookname LIKE 'test.pdf'";
...