phpからpdoでmysqlにユーザーの登録を実施したら以下のようにエラーとなります。
Fatal error: Uncaught PDOException: SQLSTATE[22003]: Numeric value out of range: 1416 Cannot get geometry object from data you send to the GEOMETRY field in /var/www/html/.vscode/adduser.php:49 Stack trace: #0 /var/www/html/.vscode/adduser.php(49): PDOStatement->execute(Array) #1 {main} thrown in /var/www/html/.vscode/adduser.php on line 49
$pdo = connect(); // ステートメント $stmt = $pdo->prepare('INSERT INTO `User2` (`id`, `user_name`, `password`, `latlng`, `zoom`) VALUES (null, ?, ?, ?, ?)'); // パラメータ設定 $params = []; $params[] = $user_name; $params[] = password_hash($password, PASSWORD_DEFAULT); $params[] = ''; $params[] = 14; // SQL実行 $success = $stmt->execute($params);
mysqlのレコード
1mysql> show columns from User2; 2+-----------+---------------------+------+-----+---------+----------------+ 3| Field | Type | Null | Key | Default | Extra | 4+-----------+---------------------+------+-----+---------+----------------+ 5| id | int(11) unsigned | NO | PRI | NULL | auto_increment | 6| user_name | varchar(64) | NO | UNI | | | 7| password | varchar(255) | NO | | | | 8| latlng | geometry | NO | MUL | NULL | | 9| zoom | tinyint(2) unsigned | YES | | NULL | | 10+-----------+---------------------+------+-----+---------+----------------+
エラーが出ないようにしたいです。
とりあえず上記のコードでユーザ名とパスワードを登録して、からログイン後のtop画面に行きたいですが、エラーが出ます。top画面に行った後に、その画面でのボタンをクリックすると現在位置を取得してUser2テーブルに格納するため、「geometry」typeのlatlngカラムを作っておいてます。
ログインの際にはユーザ名とパスワードを格納するだけなので、上記コードではとりあえず、latlngは空にしておいたという経緯です。
回答3件
あなたの回答
tips
プレビュー