问题标签 [bindparam]
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 - 查询没有得到任何结果
我正在让我的查询显示结果,我在 mySQL 中本地运行了完全相同的查询,我得到了想要的结果,但是当它通过以下代码执行时没有任何反应。
我不明白为什么我没有得到任何结果我收到连接成功消息但没有返回实际值。
php - 如何使用反射通过bind_param方法使用mysqli插入数据?这两个数组有什么区别?
作为类的bind_param($types, $var1, $var2, $var3,..)
方法,mysqli_stmt
它只获得一系列$variables
第二个参数(我想在那里传递数组),并且$variables
在我的情况下数量是未知的,我想在我的insert($data)
函数中使用反射。http://php.net/manual/ru/mysqli-stmt.bind-param.php
我没有展示我的功能中不必要的部分,以避免混淆......
删除了不相关的代码
如图所示
在这一部分中,我使用反射将数组传递给对象bind_param()
方法的第二个参数。$this->$stmt
它不会使 mysqli 使用 1-option 插入表中。
但是当我使用 2-option 时,mysqli 会插入数据。为什么?我必须使用 1-option,因为参数的数量是未知的。
我怎样才能从 Reflection 和 mysqli 中受益呢?
这两个选项(数组)有什么区别?
php - bindParam 通过类的私有成员变量读写
我创建了一个User
仅使用私有成员变量和 getter/setter 函数调用的类
所以print_r($user)
会给我这样的东西:
现在我使用 PDO 将对象插入数据库(我将跳过连接部分,因为它正在工作而不是问题的一部分)。这是我插入数据的函数:
也可以。但是,当我将 php error_reporting 更改为E_ALL | E_STRICT
也显示运行时严格警告时,插入代码会strict standards only variables should be passed by reference
为这些bindParam
行生成警告。在问了谷歌之后,我发现显然我必须分两步执行此操作:
将它们转换为新格式后,一切正常,没有任何警告。
问题是,我的原始User-class
文件更大,有 20 多个私有成员变量,而且我还有其他类似的类。所以我在考虑遍历变量并将它们保存在一个数组中,然后将它们保存bindParam
为数组。但是后来我面临的问题是foreach
只遍历公共变量而不是私有变量......所以我现在的问题是:
- 是否可以以
bindParam
某种方式与循环结合? - 如果是,我如何遍历私有成员变量并保存它们?
为方便起见,我在任何地方都使用相同的命名格式。即数据库中的列 withfirstname
将m_firstname
在User-class
withget_firstname()
和set_firstname($firstname)
作为 getter/setter中具有对应项
mysqli - 警告:mysqli_stmt::bind_param():变量数与准备好的语句 5 中的参数数不匹配
我是编码新手。我只是为我的旅行社创建新成员数据,当这段代码运行不正常时我会感到困惑。当我第一次在 mysqli 中将这段代码用于 4 行时,它运行良好,但是当我尝试处理复杂数据时,它没有运行。
这是mysqli代码:
当我单击更新 mysqli 消息时:
这是我的示例 php 代码:
php - PHP 致命错误:在非对象上调用成员函数 bind_param()
我在下面的代码下运行时遇到错误,请帮助我
错误是
PHP 致命错误:在第 98 行的 /var/www/html/android_login_api_test/include/DB_Functions.php 中的非对象上调用成员函数 bind_param()
php - BindParam Foreach 循环不起作用
由于某种原因,这不起作用,相同的循环适用于 SELECT 语句,但不适用于 INSERT 语句。
php - 了解 PDO 准备好的语句和绑定参数
根据经验,并且不断被告知使用准备好的语句和绑定我的参数的好处,我一直在我的代码中使用这两种技术,但是我想确切地了解这两种技术中的每一种的目的:
根据我对准备好的陈述的理解:
前面的代码应该使用我提出的查询在数据库中创建一种缓冲区。现在根据我的理解(我可能是非常错误的),前面的代码是不安全的,因为字符串$sql
可能是任何取决于$id
实际情况的字符串,如果$id
= 1; DROP TABLE myTable;--
,即使我有一个准备好的语句,我也会插入一个恶意查询。
据我了解,这是绑定我的参数的地方。如果我改为执行以下操作:
数据库应该事先准确地知道 sql 语句的所有部分:
SELECT
这些列:*
FROM myTable
和WHERE id =
“用户输入的变量”,如果是"a variable that was input by the user" != a variable
,则查询失败。
有些人告诉我我的理解是正确的,而其他人则告诉我这是错误的,如果我错了、正确或遗漏了什么,有人可以告诉我吗?并尽可能详细地说明,非常感谢所有反馈!
php - 准备带有多个参数的 SQL 查询 (mysqli)
我不知道为什么准备这个 sql 查询是无效的。
结果是“不好”。应该怎么做?
这是来自 am_measurements 表的数据: https ://mega.nz/#!tJEx0IiL!OoXHSVJh0A0kAVzYrcJKL6BGxktcZZWpOC26KV-Egao
@编辑
现在我知道是什么导致了问题,但我不知道为什么以及如何解决它:
当我删除以前的 sql 查询时,一切正常。
php - mysqli_query() 期望参数 2 是带有 bind_param 的字符串
当我在浏览器中调用 archive.php 时出现错误:警告:mysqli_query() 期望参数 2 为字符串,对象在...
php - 如何调试 SQLSTATE[HY000]:一般错误:准备好的语句中的 2031
我有这个准备好的语句查询
如果我设置一个数组来绑定值
然后执行它
它不会工作,我明白了
注意:数组到字符串的转换
referring to
$stmt->execute(array($query_array));
并Uncaught exception 'PDOException' with message 'SQLSTATE[HY093]: Invalid parameter number'
指同一行。
然后我尝试使用bindParam
绑定值
并且工作正常
如果我尝试另一种bindParam
语法
$stmt->bindParam("sssiii", $a, $b, $c, $d1, $d2, $d3);
它不会工作。给
警告:PDOStatement::bindParam() 最多需要 5 个参数,给定 7 个参数
referring to
$stmt->bindParam("sssiii", $a, $b, $c, $d1, $d2, $d3);
和
未捕获的异常“PDOException”,带有消息“SQLSTATE[HY000]:一般错误:2031”
referring to
$stmt->execute();
1.错误是由于默认情况下准备好的语句转换为字符串所有值,所以我必须int
手动定义吗?这就是为什么bindParam
工作正常?还是我缺少其他东西?
2.为什么bindParam("sssiii"...
语法不起作用?
3.我希望这个查询动态地获取它的值,所以bindParam
不能手动使用。我想使用关联数组或bindParam("sssiii"...
语法。
我怎样才能做到这一点?谢谢