问题标签 [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.
pdo - 在 PDO 查询中设置限制以希望具有更大的可移植性
我开始使用 PDO 库而不是 Creole 并发现大多数类似的东西除了我找不到设置限制的函数。
我不认为我应该在查询字符串中包含限制语句,因为 MSSQL 和 MySQL 不共享相同的语法。
php - 我可以将数组绑定到 IN() 条件吗?
我很想知道是否可以使用 PDO 将值数组绑定到占位符。这里的用例是尝试传递一个值数组以用于IN()
条件。
我希望能够做这样的事情:
并让 PDO 绑定并引用数组中的所有值。
目前我正在做:
哪个确实可以完成这项工作,但只是想知道我是否缺少内置的解决方案?
php - 并发问题
我在使用 MySQL 和 PHP + Propel 1.3 时遇到了似乎是并发问题。下面是一个 Propel 对象的“保存”方法的小例子。
问题是 $foo 对象。假设我们在很短的时间内接连两次调用示例方法。在某些情况下,如果第二个事务读取 $foo...
...在第一笔交易有机会保存之前...
...第二个事务读取的 $foo 将过时并且会发生坏事。
如何强制锁定存储 Foo 对象的表,以便后续事务只有在第一个事务完成工作后才能从中读取?
编辑:上下文是一个 Web 应用程序。简而言之,在某些情况下,我希望第一个请求进行一些数据修改(这发生在获取和保存 $foo 之间)。所有后续请求都不应进行修改。是否会发生修改取决于获取的 $foo 状态(表行属性)。如果两个事务获取相同的 $foo,则修改将发生两次,这会导致问题。
php - 您可以使用 PDO 和 PostgreSQL 返回多个结果集吗?
我想将多个查询组合成一个存在于 PostgreSQL 中的函数。该函数将使用 PDO 进行查询。
功能是:
这是PHP代码。“数据库”作为设置常用连接属性的单例类,没什么特别的。
和结果。
这似乎表明它不受支持,但话又说回来,我找不到确切定义什么的列表。
有没有人设法让这个工作?
参考:
zend-framework - Zend_Db 的正确使用
我目前正在使用 Zend_Db 类来管理我的数据库连接。我有几个问题。
- 它是否巧妙地管理打开连接?(例如,我已经打开了一个连接,它是否知道要使用它 - 或者我是否必须在打开一个新连接之前不断检查是否已经打开了一个连接?)
- 我使用以下代码获取结果(以 FETCH_OBJ 模式获取):
出于某种原因,fetchRow 不起作用 - 所以我经常使用 fetchAll,即使我只有一个结果(比如 searchWHERE id= number
和 id 是一个 PK)
我的问题是 - 当我使用 fetchAll 而不是 fetchRow 时,我会牺牲多少时间/内存,即使只有结果?
- 我创建了以下类来管理我的连接:
然后我打电话
这是最好的方法吗?有人有更好的主意吗?
谢谢!
ps对不起,这里的代码格式草率..
php - PDO 存储过程返回值
我正在使用返回错误代码的 SQL Server 存储过程;这是一个非常简单的 SP 片段。
我可以使用 mssql 扩展获取返回值:
但是,我不知道如何访问 PDO 中的返回值;我不想使用 OUT 参数,因为很多这些存储过程已经被编写。这是我当前如何在 PHP 中调用该过程的示例。
php - 有没有办法强制 PHP 等待 MySQL 完成事务?
我承认我不是 100% 了解 PDO 和 MySQL 的内部工作原理,所以我将举一个例子让我的问题更清楚。
我正在制作一个相当粗糙的基于浏览器的策略游戏,因为我认为这是一种学习 PHP 和数据库的有趣方式。当我遇到一个相当意外的错误时,我正在对战斗脚本进行错误测试。我使用 Cron Jobs 每分钟调用一个脚本,看起来像这样:
$sql = "从现役军队中选择军队 ID,到达地点 = 0;";
完成基本计算后(进攻方军队与防守方军队),数据库中的六个表将被更新。我面临的问题是,当我在同一分钟内对同一目标进行多次攻击时,其中一次攻击时不时地获取过时的数据库信息(在一种极端情况下,攻击 #10 获取与攻击 #5 相同的表) .
我猜这是因为脚本比数据库快吗?有没有办法强制 PHP 等到所有相关信息都准备好后再用下一个 $row 重复该函数?
编辑:埃米尔可能是正确的。我不能确定,因为我的 PDO 似乎不可能保持打开足够长的时间让我在 beginTransaction() 和 commit() 之间传递几个语句。但是,脏读似乎很奇怪,因为我将 InnoDB 与“REPEATABLE READ”一起使用。一些谷歌搜索建议 REPEATABLE READ 将使脏读变得不可能。在考虑了一段时间如何杀死自己之后,我选择了破解。现在,我将一个特殊值的 UPDATE 放在我的脚本顶部,另一个放在底部的大批量(大约六个 UPDATE 语句)的末尾。在运行该函数之前,我已经建立了一个 while() 循环来检查该特殊值是否设置为 0。如果不是,它会休眠 0.01 秒并重试。查看输出,while循环平均重复两次,暗示它可能真的有效?它还没有失败,但可能是因为它不是高峰时间。明天我会定期再试一次。我知道没有人关心这一切,但我觉得我应该做这个更新以防万一。=P
php - 插入时自动将字符串剪辑到适当的长度
我在 MySQL 中有一个包含各种 VARCHAR 字段的表。我想通过 PHP 从表单中插入一些用户数据。显然,如果我知道 PHP 中的字段长度,我可以用substr()
. 但是这种违反 DRY(存储在 MySQL 中的字段长度并作为我的 PHP 脚本中的常量)。有没有办法让我配置一个 INSERT 以便它自动切断过长的字符串,而不是失败?
编辑:当我的字符串过长时,它在 PHP/PDO 中失败(或至少导致异常)。不知道我必须在 PHP/PDO 中做什么,所以它做正确的事。
编辑2:呃。这是错误的方法;即使我让它在 INSERT 上正常工作,如果我想检查重复的字符串,它也不会正确匹配。
php - PHP + PDO/MySQL:如何自动查询 VARCHAR 字段长度?
有没有办法使用 PHP+PDO 来查询 MySQL 数据库并找出一些 VARCHAR 字段的列宽?如果可能的话,我不想将它们硬编码到我的 PHP 文件中。
(目的:确定要插入这些列或与列中现有数据进行比较的字符串的最大长度。)