$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'];
但我得到了错误:
警告:PDOStatement::execute(): SQLSTATE[HY093]: 参数号无效:参数未在...文件文本中定义
我已经检查了其他几个类似的线程,但我想我在这里遗漏了一些基本概念,因为我仍然找不到答案。据我所见,我的数组中有 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
我已经尝试了将 $user_id 设置为特定值并且没有纬度/经度参数的 PDO 准备语句。
如果我忘记了任何重要信息,只需指出它,我会得到它。地址是 varchar 和 lat/long 是 DB btw 中的浮点数。使用 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;
}