$fields は、印刷後に次のような値を取得する配列です。
Array ( [first_name] => Nisse [last_name] => Example [ssn] => 198306205053 [address] => Stockholm, Sverige [phone_number] => 54654987321546 [latitude] => 55.717089999999999 [longitude] => 13.235379 )
次のように、データクラスから update 関数を呼び出します。
DataManager::update_user($fields, $user_data['id'];
しかし、私はエラーが発生します:
警告: PDOStatement::execute(): SQLSTATE[HY093]: 無効なパラメーター番号: パラメーターが定義されていません...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
$user_id を特定の値に設定し、緯度/経度パラメーターを指定せずに、PDO 準備済みステートメントを試しました。
重要な情報を忘れた場合は、それを指摘してください。アドレスは varchar で、lat/long は DB の 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;
}