php - 将带引号的参数传递给准备好的语句 PDO
问题描述
我检查了其他问题、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']."'";
并使用上面的准备好的语句,但仍然无法正常工作。
我错过了什么,或者做错了什么?也许我必须使用另一个查询?
解决方案
您所做的交易的“选择”部分是不必要的。因为你的意思是如果它存在就删除它。您正在尝试在下一部分中将其删除。如果你真的直接运行第二部分,如果它已经存在,它会删除它。我也建议你在爪区尝试这个。
$sql = " DELETE FROM libri WHERE bookname LIKE 'test.pdf'";
推荐阅读
- asp.net - 如何将只读视图 Excel 工作表嵌入到在 Intranet 上运行的 asp.net 站点中
- java - Java 内存不足。这不是内存泄漏吗?
- javascript - Angular 8 中 *ngFor 中的 HTML 输入中的数据绑定
- c++ - 通过 std::unique_ptr 的 LazyArray 模板,这是双重检查习语的正确实现吗?
- sap-cloud-sdk - 在 S/4HANA Cloud SDK 中如何生成 OData 服务对象?
- odata - ODATA 服务器:属性名称与属性 ID
- android - 如何从 JSON 获取嵌套的 ArrayList
- flutter - 如何修复文本字段不起作用的 Flutter 页面
- python - 将数据字符串格式化为 Excel
- database-design - 多对多多表设计