问题标签 [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.

0 投票
5 回答
5506 浏览

php - 可变参数/结果与准备好的语句绑定

在我即将结束的一个项目中,我为 PHP 编写并实现了一个对象关系映射解决方案。在怀疑者和梦想家大声喊出“到底是怎么回事?”之前,放松一下——我还没有找到一种方法来使后期的静态绑定起作用——我只是在以尽可能最好的方式解决它。

无论如何,我目前没有使用准备好的语句进行查询,因为我想不出一种方法来将可变数量的参数传递给bind_params()orbind_result()方法。

你问,为什么我需要支持可变数量的参数?因为我的模型的超类(将我的解决方案想象成一个被破解的 PHP ActiveRecord 崇拜者)是定义查询的地方,因此例如 find() 方法不知道它需要绑定多少参数.

现在,我已经考虑过构建一个参数列表并将一个字符串传递给 eval(),但我不太喜欢这种解决方案——我宁愿只实现自己的安全检查并传递语句。

有没有人对如何完成这项工作有任何建议(或成功案例)?如果你能帮我解决第一个问题,也许我们可以解决结果集的绑定问题(如果涉及到确定表结构的初始查询,我怀疑这会更困难,或者至少更耗费资源)。

0 投票
13 回答
143565 浏览

php - mysqli 或 PDO - 有什么优点和缺点?

取而代之的是,我们在使用 mysqli 和 PDO 来处理诸如准备好的语句和事务支持之类的东西之间进行划分。有些项目使用一个,有些项目使用另一个。我们几乎不可能迁移到另一个 RDBMS。

我更喜欢 PDO 的唯一原因是它允许为准备好的语句命名参数,而据我所知 mysqli 不允许。

当我们整合我们的项目以仅使用一种方法时,选择其中一种作为标准是否还有其他优点和缺点?

0 投票
2 回答
857 浏览

php - 使用 MySQLi - 更适合关闭查询

我习惯于将变量使用量保持在最低限度。所以我想知道以下是否有任何优势:

现在,如果我是对的,示例 1 应该更有效,因为$queryunset我重新分配它应该释放与之相关的任何内存时。但是有一种方法 ( MySQLi_Result::free()) 可以释放相关的内存 - 这是同一件事吗?

如果我不调用::free()以释放与结果相关的任何内存,而是unset通过重新分配变量来释放我做同样的事情吗?我不知道如何记录这种事情 - 有人有什么想法吗?

0 投票
2 回答
33513 浏览

php - PHP + MySql + 存储过程,我如何访问“out”值?

文档严重缺乏与 PHP 中 mysql 中的存储过程有关的任何内容。我目前有一个通过 PHP 调用的存储过程,如何获取 out 参数的值?

0 投票
4 回答
2187 浏览

php - mysqli_stmt::num_rows() 返回错误值

我正在使用 mysqli 类和准备好的语句在 PHP 中编写数据库处理程序类。我试图打印出结果。它没有立即工作,所以我决定进行一些调试。我尝试使用类中的num_rows()方法mysqli_statement,但它一直返回 0。我决定编写一小部分测试代码以使其更简单,这样我就可以看到出了什么问题。然后我能够返回我想要的数据,但该num_rows()方法仍然返回 0,即使它实际上是在选择和检索一些数据。这是代码:

预期结果是:

实际结果是:

谁能告诉我这是为什么?

0 投票
3 回答
7644 浏览

php - 可以使用多个/嵌套的 MySQLi 语句吗?

是否可以在前一个语句MySQLi prepared statementfetch()调用中包含一个?如果没有,最好的解决方法是什么?

示例代码:

0 投票
10 回答
60190 浏览

php - PHP-MySQL 或 MySQLi 中哪个最快?

我想知道是否有人对这种二分法有任何第一手经验。一些博客说mysql扩展比mysqli快。这是真的?

我只问速度。我知道 mysqli 具有旧扩展中不存在的功能。

0 投票
7 回答
39685 浏览

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您所期望的。

0 投票
2 回答
6995 浏览

php - 有没有办法将数组绑定到 mysqli 准备

我正在尝试创建一个类,该类将执行具有任意数量变量的多个存储过程中的任何一个

我使用 php 和 mysqli

  • 我的类枚举一个数组并根据元素的数量构造一个字符串(如果有)
  • CALL spTestLogin(?,?)例如给出这样的东西
  • 我现在需要使用这样的东西来绑定我的数组中的输入:

    $stmt->bind_param($this->paramTypes,$this->paramValues);//paramValues 是我的数组

然后,如果可行,我可以努力获得我的结果

有任何想法吗

0 投票
4 回答
5971 浏览

php - 有没有办法查看准备好的查询,因为它将在数据库上执行?

可能重复:
PDO 准备好的语句

我在 PHP 中使用 mysqli 扩展,我想知道,是否有任何方法可以查看准备好的查询,因为它将在服务器上执行,例如查询是这样的

但我想在填写值后查看查询,如下所示: