问题标签 [mysqli]
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.
php - 可变参数/结果与准备好的语句绑定
在我即将结束的一个项目中,我为 PHP 编写并实现了一个对象关系映射解决方案。在怀疑者和梦想家大声喊出“到底是怎么回事?”之前,放松一下——我还没有找到一种方法来使后期的静态绑定起作用——我只是在以尽可能最好的方式解决它。
无论如何,我目前没有使用准备好的语句进行查询,因为我想不出一种方法来将可变数量的参数传递给bind_params()
orbind_result()
方法。
你问,为什么我需要支持可变数量的参数?因为我的模型的超类(将我的解决方案想象成一个被破解的 PHP ActiveRecord 崇拜者)是定义查询的地方,因此例如 find() 方法不知道它需要绑定多少参数.
现在,我已经考虑过构建一个参数列表并将一个字符串传递给 eval(),但我不太喜欢这种解决方案——我宁愿只实现自己的安全检查并传递语句。
有没有人对如何完成这项工作有任何建议(或成功案例)?如果你能帮我解决第一个问题,也许我们可以解决结果集的绑定问题(如果涉及到确定表结构的初始查询,我怀疑这会更困难,或者至少更耗费资源)。
php - mysqli 或 PDO - 有什么优点和缺点?
取而代之的是,我们在使用 mysqli 和 PDO 来处理诸如准备好的语句和事务支持之类的东西之间进行划分。有些项目使用一个,有些项目使用另一个。我们几乎不可能迁移到另一个 RDBMS。
我更喜欢 PDO 的唯一原因是它允许为准备好的语句命名参数,而据我所知 mysqli 不允许。
当我们整合我们的项目以仅使用一种方法时,选择其中一种作为标准是否还有其他优点和缺点?
php - 使用 MySQLi - 更适合关闭查询
我习惯于将变量使用量保持在最低限度。所以我想知道以下是否有任何优势:
现在,如果我是对的,示例 1 应该更有效,因为$query
当unset
我重新分配它应该释放与之相关的任何内存时。但是有一种方法 ( MySQLi_Result::free()
) 可以释放相关的内存 - 这是同一件事吗?
如果我不调用::free()
以释放与结果相关的任何内存,而是unset
通过重新分配变量来释放我做同样的事情吗?我不知道如何记录这种事情 - 有人有什么想法吗?
php - PHP + MySql + 存储过程,我如何访问“out”值?
文档严重缺乏与 PHP 中 mysql 中的存储过程有关的任何内容。我目前有一个通过 PHP 调用的存储过程,如何获取 out 参数的值?
php - mysqli_stmt::num_rows() 返回错误值
我正在使用 mysqli 类和准备好的语句在 PHP 中编写数据库处理程序类。我试图打印出结果。它没有立即工作,所以我决定进行一些调试。我尝试使用类中的num_rows()
方法mysqli_statement
,但它一直返回 0。我决定编写一小部分测试代码以使其更简单,这样我就可以看到出了什么问题。然后我能够返回我想要的数据,但该num_rows()
方法仍然返回 0,即使它实际上是在选择和检索一些数据。这是代码:
预期结果是:
实际结果是:
谁能告诉我这是为什么?
php - 可以使用多个/嵌套的 MySQLi 语句吗?
是否可以在前一个语句MySQLi prepared statement
的fetch()
调用中包含一个?如果没有,最好的解决方法是什么?
示例代码:
php - PHP-MySQL 或 MySQLi 中哪个最快?
我想知道是否有人对这种二分法有任何第一手经验。一些博客说mysql扩展比mysqli快。这是真的?
我只问速度。我知道 mysqli 具有旧扩展中不存在的功能。
php - MySQL中非空列中的空字符串?
我曾经使用标准的 mysql_connect()、mysql_query() 等语句从 PHP 中处理 MySQL 的内容。最近我一直在转而使用美妙的 MDB2 类。除此之外,我还使用准备好的语句,因此我不必担心逃避输入和 SQL 注入攻击。
但是,我遇到了一个问题。我有一个包含几个 VARCHAR 列的表,这些列被指定为非空(即,不允许 NULL 值)。使用旧的 MySQL PHP 命令,我可以毫无问题地做这样的事情:
但是,现在,如果我有这样的查询:
然后在 PHP 中我有:
这将抛出错误“ null value violates not-null constraint
”
作为临时解决方法,我检查是否$value
为空,并将其更改为" "
(单个空格),但这是一个可怕的 hack,可能会导致其他问题。
我应该如何使用准备好的语句插入空字符串,而不是尝试插入 NULL?
编辑:这个项目太大了,无法遍历我的整个代码库,找到使用空字符串“”的任何地方并将其更改为使用 NULL。我需要知道的是为什么标准 MySQL 查询将“”和 NULL 视为两个独立的事物(我认为是正确的),但准备好的语句将“”转换为 NULL。
请注意,“”和 NULL不是一回事。例如,SELECT NULL = "";
返回NULL
而不是1
您所期望的。
php - 有没有办法将数组绑定到 mysqli 准备
我正在尝试创建一个类,该类将执行具有任意数量变量的多个存储过程中的任何一个
我使用 php 和 mysqli
- 我的类枚举一个数组并根据元素的数量构造一个字符串(如果有)
CALL spTestLogin(?,?)
例如给出这样的东西我现在需要使用这样的东西来绑定我的数组中的输入:
$stmt->bind_param($this->paramTypes,$this->paramValues);//paramValues 是我的数组
然后,如果可行,我可以努力获得我的结果
有任何想法吗
php - 有没有办法查看准备好的查询,因为它将在数据库上执行?
可能重复:
PDO 准备好的语句
我在 PHP 中使用 mysqli 扩展,我想知道,是否有任何方法可以查看准备好的查询,因为它将在服务器上执行,例如查询是这样的
但我想在填写值后查看查询,如下所示: