prepared-statement相关内容

PHP PDO 准备好的语句查询不更新记录

我在使用 PHP 的 PDO 对象准备更新语句和更新记录时遇到问题.我已经获取了原始 SQL 查询并在 phpMyAdmin 中运行它,参数被传递给函数的值替换.它按预期更新记录.但是,从脚本运行时,它不会更新.它抛出零错误并返回 00000 的 errorInfo() 回复,据我所知,这是 PDO 表示一切正常的方式.我知道 PDO 对象有效,因为它成功地从数据库中插入和选择记录,包括我试图更新 ..
发布时间:2021-12-26 20:25:23 PHP

在 PDO 语句中动态更改列名

是否可以在准备好的 MySQL 语句中将列名作为参数传递?举个例子: 更新图片SET :placement = :imageURL哪里 ID = :titleID; PDO 在每个参数周围添加 ',所以上面的中间行变成: SET '主页' = '1.jpg' MySQL 不喜欢哪个.有没有办法在 PDO 语句中包含字段名称的参数并让它们接受? 否则我想我将不得不编写几个不同的 PDO ..
发布时间:2021-12-26 20:24:42 PHP

默认情况下,PDO 是否总是使用模拟准备好的语句?

PDO 有选项 PDO::ATTR_EMULATE_PREPARES 控制是否准备好仅当数据库不支持或始终不支持时才应模拟语句.但是,它没有提到它是否总是默认模拟它们. 通常人们会假设仅在必要时才使用仿真,但由于它是 PHP,因此不能仅仅因为它是健全的就假设...... 解决方案 取决于数据库驱动程序.它们总是默认模拟对于 MySql(当然您可以手动关闭该选项);在 Postgres ..
发布时间:2021-12-26 20:22:41 PHP

PDO:将多余的参数传递给准备好的语句

您能否向使用 PDO 的准备好的语句发送比需要更多的参数而不会产生不良副作用? 这似乎是一个奇怪的问题,但我问的是因为我连续有 4 个查询,它们都使用相似和不同的参数.查询的相关部分: 第一个(选择,与其他人不同的表): WHERE threadID = :tid 第二(选择): WHERE user_ID = :u_ID AND thread_ID = :tid 第三 ..
发布时间:2021-12-26 20:19:29 其他开发

使用 DEFAULT 值准备 MySQL INSERT/UPDATE 语句

引用 MySQL INSERT 手册 - 更新也一样: 使用关键字 DEFAULT 将列显式设置为其默认值.这使得编写将值分配给除少数列之外的所有列的 INSERT 语句变得更容易,因为它使您能够避免编写不包括表中每一列的值的不完整 VALUES 列表.否则,您必须写出与 VALUES 列表中的每个值对应的列名列表. 简而言之,如果我写 INSERT INTO table1 (col ..
发布时间:2021-12-26 20:18:53 PHP

使用 PHP PDO 准备好的语句和 MySQL 选择字段为空的行

我一直在将应用程序转换为使用 PDO 准备好的语句而不是 mysqli,但我遇到了一个奇怪的问题.我在数据库中有一些记录,预计字段将为空.不是 'null'(字符串)或 ''(空字符串),而是 NULL.我动态地构建我的查询,所以过去当我在一个对象中遇到一个空变量时,我会像这样构建查询: WHERE fieldName 为空; 当字段为空时会得到预期的结果. 现在使用 PDO,我的查询不 ..
发布时间:2021-12-26 20:18:10 PHP

带有命名占位符的 INSERT 和 ON DUPLICATE KEY UPDATE 的 PDO 准备语句

我想将 PDO INSERT 和 UPDATE 准备好的语句切换为 INSERT 和 ON DUPLICATE KEY UPDATE,因为我认为它会比我目前正在做的更有效率,但我无法弄清楚与命名占位符和 bindParam 一起使用的正确语法. 我在 SO 上发现了几个类似的问题,但我是 PDO 的新手,无法成功地根据我的标准调整代码.这是我尝试过的,但它不起作用(它不插入或更新): 尝试 ..
发布时间:2021-12-26 20:17:53 PHP

PHP Mysql PDO 绑定变量数量与令牌数量不匹配

我环顾四周,但似乎无法找到我的问题的答案. 这是我第一次使用 PDO,所以我完全是新手. 我将大量数据拆分为 2 个表并希望将它们合并为一个,还有其他方法可以做到这一点,但没有深入探讨为什么我要这样做的复杂原因... 我生成了我想从中复制数据的表的记录集 构建我的语句 循环运行 但我收到以下错误 SQLSTATE[HY093]: Invalid parameter ..
发布时间:2021-12-26 20:16:46 PHP

PDO 是执行语句期间受影响的行

我找到了很多方法来使用 PDO 的 exec 语句,但我不确定它对我有帮助.我的理解是我必须对准备好的语句使用 execute() 函数.我正在使用来自用户输入的数据更新一行,因此我想使用准备好的语句而不是 query() 调用. 我的代码如下: $dbh = buildDBConnector();$sql = "更新 tb_users设置 authState=1哪里 id = ?和 au ..
发布时间:2021-12-26 20:11:05 PHP

PDO 错误:SQLSTATE[HY000]:一般错误:2031

我遇到了这个烦人的错误,虽然我知道我为什么会遇到它,但我终生无法找到解决方案. if ($limit) {$sth->bindValue(':page', $page - 1, PDO::PARAM_INT);$sth->bindValue(':entries_per_page', $page * $entries_per_page, PDO::PARAM_INT);}$sth->execute ..
发布时间:2021-12-26 20:09:08 PHP

从 PDO 准备好的语句中检索(或模拟)完整查询

我在两年前偶然发现了这个问题. 有没有办法在准备好的语句上调用 PDOStatement::execute() 时执行原始 SQL 字符串?出于调试目的,这将非常有用. 获胜答案指出 [...] 你也可以得到你想要的设置 PDO 属性PDO::ATTR_EMULATE_PREPARES.在这模式,PDO 将参数插入到SQL查询并发送整个执行时查询. 但它没有提到如何获取结果 ..
发布时间:2021-12-26 20:08:42 PHP

PDO 准备好的语句 - 参数名称中的冒号是做什么用的?

我看过很多文章在使用 PDO 时在命名参数前使用冒号 (:),还有一些文章不使用冒号.我会尽快不使用冒号,只是因为它少了一个按键并且更容易阅读. 它似乎对我来说工作正常,但我很好奇在使用冒号时是否遗漏了一些重要的东西? 例如,这很好用: function insertRecord ($conn, $column1, $comumn2) {尝试 {$insertRecord = $co ..
发布时间:2021-12-26 20:01:15 PHP

循环内 PDO 语句的绑定参数

我正在尝试在循环内绑定 SQL 查询的参数: $db = new PDO('mysql:dbname=test;host=localhost', 'test', '');$stmt = $db->prepare('INSERT INTO 条目值 (NULL, ?, ?, ?, NULL)');$title = '一些标题';$post = '一些文字';$date = '2010-whateve ..
发布时间:2021-12-26 11:59:17 PHP

不要在 Laravel Eloquent ORM 中使用准备好的语句?

我可以让 Eloquent ORM 运行查询而不使用准备好的语句吗?还是我必须使用 whereRaw()? 我需要使用原始查询,因为我正在尝试与 InfiniDB 交互,后者不支持来自 PHP 的准备好的语句.无论如何,所有查询都将使用内部生成的数据,而不是用户输入,因此这不应该是安全问题. 解决方案 对于 SELECT 以外的任何内容,您可以使用 unprepared() DB: ..
发布时间:2021-12-26 11:40:38 其他开发

PHP PDO::bindParam() 数据类型..它是如何工作的?

我想知道 bindParam() 中数据类型的声明是什么(或bindValue()) 用于... 我的意思是,我认为如果我定义一个整数参数 (PDO::PARAM_INT),该参数必须转换为一个整数,例如 $delete->bindParam(1, $kill, PDO::PARAM_INT);//应该像$delete->bindParam(1, (int)$kill); 或者至少在参数 ..
发布时间:2021-12-25 13:12:25 PHP