- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
$fields 是一个数组,打印后得到的值如下:
Array ( [first_name] => Nisse [last_name] => Example [ssn] => 198306205053 [address] => Stockholm, Sverige [phone_number] => 54654987321546 [latitude] => 55.717089999999999 [longitude] => 13.235379 )
我从我的数据类中调用更新函数,如下所示:
DataManager::update_user($fields, $user_data['id'];
但我收到错误:
Warning: PDOStatement::execute(): SQLSTATE[HY093]: Invalid parameter number: parameter was not defined in...filetext
我已经检查了其他几个类似的线程,但我想我在这里缺少一些基本概念,因为我仍然找不到答案。据我所知,我的数组中有 7 个“?”和 7 个项目,如果我定义了所有值,我可以在 SQL 工作台中完美运行它,即:
UPDATE users SET first_name = 'Kalle', last_name = 'Anka', ssn = 242345234, address = 'Stockholm', phone_number = 53423434, latitude = 17.189889231223423423424324234, longitude = 109.234234 WHERE id = 4
我尝试了 PDO 准备语句,将 $user_id 设置为特定值,并且没有纬度/经度参数。
如果我忘记了任何重要信息,只需指出,我就会得到。地址是 varchar ,纬度/经度是数据库中的 float 。使用MYSQL。
函数如下:
public static function update_user($fields, $user_id)
{
$db = self::_connect();
$st = $db->prepare("UPDATE users SET first_name = ?, last_name = ?, ssn = ?, address = ?, phone_number = ?, latitude = ?, longitude = ? WHERE id = '{$user_id}'");
$st->execute($fields);
return ($st->rowCount()) ? true : false;
}
最佳答案
如果您使用位置参数,则传递给 execute()
的参数数组必须是序数数组。同样,如果您使用命名参数,则数组必须是关联数组。
这是确认该行为的测试:
$stmt = $db->prepare("SELECT ?, ? ,?");
$params = array( 'a', 'b', 'c' );
// OK
if ($stmt->execute($params)) {
print_r($stmt->fetchAll());
}
$params = array( 'A'=>'abc', 'B'=>'def', 'C'=>'ghi' );
// ERROR!
if ($stmt->execute($params)) {
print_r($stmt->fetchAll());
}
$stmt = $db->prepare("SELECT :A, :B, :C");
$params = array( 'a', 'b', 'c' );
// ERROR!
if ($stmt->execute($params)) {
print_r($stmt->fetchAll());
}
$params = array( 'A'=>'abc', 'B'=>'def', 'C'=>'ghi' );
// OK
if ($stmt->execute($params)) {
print_r($stmt->fetchAll());
}
请注意,在当前版本的 PHP 中,关联数组键不必必须以 :
作为 @prodigitalson 注释的前缀。在旧版本的 PHP 中,数组键中需要使用 :
前缀。
还值得一提的是,当我尝试在单个查询中混合位置参数和命名参数时,我遇到了错误和不可预测的行为。您可以在应用中的不同查询中使用任一样式,但为给定查询选择一种或另一种样式。
关于php - 警告:PDOStatement::execute():SQLSTATE[HY093]:参数号无效:参数未在...文件文本中定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42460270/
PDOStatement::execute() [pdostatement.execute]: SQLSTATE[HY093]: 无效的参数数量:绑定(bind)变量的数量与标记数量不匹配 我收到此错
我的 vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOStatement.php 的第 28 行 如下: class PDOStatement ext
如果我使用 phpmyadmin 执行一些查询,它会显示耗时 0.0002 秒,即 0.2 毫秒。如果我使用 PDO 通过 PHP 执行相同的查询,则耗时(仅适用于下面示例代码中的第三行)为 20 毫
查看 PHP 手册,任何时候都没有建议在列上包含重音符号。 例如:最近,我正在尝试运行以下函数: $pdo->prepare("UPDATE name_table SET convert= :con
废话不多说, 直接看代码: 复制代码 代码如下: <?php $dbh = new PDO('mysql:host=localhost;dbname=test', "test&
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界. 这篇CFSDN的博客文章PHP PDOStatement::setFetchMode讲解由作者收
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界. 这篇CFSDN的博客文章PHP PDOStatement::setAttribute讲解由作者收
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界. 这篇CFSDN的博客文章PHP PDOStatement::rowCount讲解由作者收集整理,
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界. 这篇CFSDN的博客文章PHP PDOStatement::nextRowset讲解由作者收集整
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界. 这篇CFSDN的博客文章PHP PDOStatement::getColumnMeta讲解由作者
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界. 这篇CFSDN的博客文章PHP PDOStatement::getAttribute讲解由作者收
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界. 这篇CFSDN的博客文章PHP PDOStatement::fetchObject讲解由作者收集
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界. 这篇CFSDN的博客文章PHP PDOStatement::fetchColumn讲解由作者收集
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界. 这篇CFSDN的博客文章PHP PDOStatement::fetchAll讲解由作者收集整理,
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界. 这篇CFSDN的博客文章PHP PDOStatement::fetch讲解由作者收集整理,如果你
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界. 这篇CFSDN的博客文章PHP PDOStatement::execute讲解由作者收集整理,如
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界. 这篇CFSDN的博客文章PHP PDOStatement::errorInfo讲解由作者收集整理
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界. 这篇CFSDN的博客文章PHP PDOStatement::errorCode讲解由作者收集整理
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界. 这篇CFSDN的博客文章PHP PDOStatement::columnCount讲解由作者收集
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界. 这篇CFSDN的博客文章PHP PDOStatement::closeCursor讲解由作者收集
我是一名优秀的程序员,十分优秀!