问题标签 [pdo]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
27389 浏览

php - 如何在 PHP 中实现 MySQL 的提交/回滚?

好吧,基本上我有这个脚本需要很长时间才能执行,并且偶尔会超时并在我的数据库中留下半完整的数据。(是的,我知道在一个完美的世界里我会解决这个问题而不是实现提交和回滚,但我被迫不这样做)

这是我的基本代码(为简单起见而简化):

所以我的问题是,如果那个while循环中的整个过程没有完成,那么我不希望插入的行保留在那里。我认为以某种方式我可以在 while 循环的开头和结尾使用提交/回滚来执行此操作,但不知道如何操作。

0 投票
4 回答
1944 浏览

php - 命名参数、缓存和 PDO

如果我有这样的参数化 SQL 语句:

有谁知道 PDO 是否会将此(见下文)识别为相同的 SQL 语句并使用缓存而不是假设它是完全不同的 SQL 语句:

所以,我想问题是:如果参数化的选择语句中的参数名称发生了变化,但没有其他任何变化,我仍然可以获得缓存的性能优势吗?还是我必须确保参数名称保持不变?

0 投票
2 回答
9469 浏览

php - Mac 上的 PDO MySQL 驱动程序

我有一台安装了自定义 PHP 5 的 Mac,它是大约一年前构建的。我记得它花了整个星期天,我不得不编译大约 20 次才能把它弄好。我拥有的 MySQL 来自熵并且是预编译的。

现在我需要让 PDO 与 MySQL 驱动程序一起工作并且未安装驱动程序。我尝试了“pecl install pdo_mysql”,但它在找不到一些 mysql 文件的地方死了。有什么想法可以快速解决这个问题吗?

我会发布您需要的任何路径或消息来帮助我解决此问题。我是否必须重新编译 PHP,或者我可以只编译 pdo_mysql 扩展?

我希望我不会显得懒惰,我只是有很多代码要写,没有太多时间来处理我的 PHP 配置。

0 投票
2 回答
1087 浏览

php - PDO查询问题

我正在将一些代码从旧的 mysql_* 函数更新到 PDO。它连接没有问题,运行查询没有问题,但结果集是空的。PDO::query() 应该返回一个 PDOStatement 对象,但我得到的回报是真实的。没有错误报告。

这是我的代码:

我看到的输出是:

object true 错误:getClientInfo 查询失败。

任何想法为什么它没有返回任何结果?

0 投票
3 回答
12823 浏览

php - PHP5 的 PDO rowCount MySQL 问题的解决方法

我最近开始使用 PHP5 开发一个新项目,并希望使用他们的 PDO 类。问题是 MySQL PDO 驱动程序不支持 rowCount() 因此无法运行查询然后获取受影响的行数或返回的行数,就我而言,这是一个相当大的问题。我想知道是否有其他人以前处理过这个问题,以及你为解决这个问题做了什么。必须执行 fetch() 或 fetchAll() 来检查是否有任何行受到影响或返回对我来说似乎是一种黑客行为,我宁愿只做 $stmt->numRows() 或类似的事情。

0 投票
2 回答
55272 浏览

php - 获取带有绑定参数的 PDO 查询字符串而不执行它

是否可以从具有绑定参数的 PDO 对象中获取查询字符串而不先执行它?我有类似于以下的代码(其中 $dbc 是 PDO 对象):

目前,这将回显一条 SQL 语句,如:“SELECT * FROM users WHERE username = ?”。但是,我希望包含绑定参数,使其看起来像:'SELECT * FROM users WHERE username ='bob'"。有没有办法在不执行它或通过某些东西用参数替换问号的情况下做到这一点像 preg_replace?

0 投票
6 回答
11584 浏览

php - 什么时候*不*使用准备好的语句?

我正在重新设计一个使用最小数据库的 PHP 驱动的网站。原始版本使用“pseudo-prepared-statements”(执行引用和参数替换的 PHP 函数)来防止注入攻击并将数据库逻辑与页面逻辑分离。

用使用 PDO 和实际准备好的语句的对象替换这些临时函数似乎很自然,但是在阅读了它们之后,我不太确定。PDO 似乎仍然是一个好主意,但准备好的语句的主要卖点之一是能够重用它们……我永远不会。这是我的设置:

  • 这些陈述都非常简单。大多数都是形式SELECT foo,bar FROM baz WHERE quux = ? ORDER BY bar LIMIT 1。该批次中最复杂的语句只是三个这样的选择与UNION ALLs 连接在一起。
  • 每个页面命中最多执行一个语句并且只执行一次。
  • 我在一个托管环境中,因此对通过亲自进行任何“压力测试”来抨击他们的服务器持谨慎态度。

鉴于使用准备好的语句至少会使我正在进行的数据库往返次数增加一倍,我最好避免使用它们吗?我是否可以PDO::MYSQL_ATTR_DIRECT_QUERY在保留参数化和注入防御优势的同时避免多次数据库访问的开销?或者,与执行我不应该担心的未准备好的查询相比,准备好的语句 API 使用的二进制调用是否表现得足够好?

编辑:

感谢所有好的建议,伙计们。这是我希望我可以将多个答案标记为“已接受”的地方——许多不同的观点。不过,最终,我必须对rick给予应有的回报……如果没有他的回答,即使听从了每个人的建议,我也会幸福地离开并做完全错误的事情。:-)

它是模拟的准备好的语句!

0 投票
1 回答
5130 浏览

php - SQLite 事务没有按预期工作

我准备了 2 个文件,“1.php”和“2.php”。

“1.php”是这样的。

而“2.php”就是这样的。

我执行“1.php”。它启动一个事务并等待 55 秒。

所以当我立即执行“2.php”时,我的期望是:

  1. “1.php”正在获得交易和
  2. “1”持有数据库锁
  3. “2”不能开始交易
  4. "2" 无法获得数据库锁所以
  5. "2" 必须等待 55 秒

但是,但测试进行了另一种方式。当我执行“2”时,然后

  1. "2" 立即返回结果
  2. “2”没等

所以我不得不认为“1”无法获得事务,或者无法获得数据库锁。

任何人都可以帮忙吗?

0 投票
3 回答
7891 浏览

php - PHP PDO 缓冲查询问题

我在使用 PHP 数据对象函数时遇到了一些严重问题。我正在尝试使用缓冲查询遍历一个相当大的结果集(~60k 行,~1gig)以避免获取整个结果集。

无论我做什么,脚本都挂在 PDO::query() 上 - 似乎查询正在无缓冲运行(为什么结果集大小的变化会“解决”问题?)。这是我重现问题的代码:

如果我用一些合理的数量限制查询,它工作正常:

我尝试过使用 PDO::MYSQL_ATTR_MAX_BUFFER_SIZE 并使用 PDO::prepare() 和 PDO::execute() (尽管上述查询中没有参数),但都无济于事。任何帮助,将不胜感激。

0 投票
9 回答
107662 浏览

php - 如何使用 LIKE 语句创建 PDO 参数化查询?

这是我的尝试: