将带引号的参数传递给准备好的语句PDO

问题描述 投票:0回答:1

[我检查了其他问题,PHP和PDO文档以及许多其他示例,但是我感到很困惑,可能是因为我刚开始使用PHP和MySQL。

我正在尝试先检查是否存在带有SELECT语句的行,然后是否存在该行DELETE它。

但是,查询未通过,我在Ubuntu 18上使用MySQL 8,并且查询仅在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']."'";并使用上面的预处理语句,但仍然无法正常工作。

我错过了什么,还是弄错了?也许我必须使用另一个查询?

php mysql pdo prepared-statement
1个回答
-1
投票

“ select”部分已完成的交易是不必要的。因为您的意思是删除它(如果存在)。您正尝试在下一部分中将其删除。如果您直接直接运行第二部分,它将被删除(如果已经存在)。我也建议您在爪状区域尝试此操作。

$sql = " DELETE FROM libri WHERE bookname LIKE 'test.pdf'";
© www.soinside.com 2019 - 2024. All rights reserved.