[我检查了其他问题,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']."'";
并使用上面的预处理语句,但仍然无法正常工作。
我错过了什么,还是弄错了?也许我必须使用另一个查询?
“ select”部分已完成的交易是不必要的。因为您的意思是删除它(如果存在)。您正尝试在下一部分中将其删除。如果您直接直接运行第二部分,它将被删除(如果已经存在)。我也建议您在爪状区域尝试此操作。
$sql = " DELETE FROM libri WHERE bookname LIKE 'test.pdf'";