局所的だけど。
環境
お名前.comのRSサーバーのphpmyadmin
テーブルとカラムはすでに作ってあって、データを登録(INSERT)したいんだけどできない。
こんな状況
ちゃんと書いてるはずなのに動かない。
$sql = "INSERT INTO clients (regist_date, regist_start) VALUES ( :regist_date, :regist_start)";
$stmt = $dbh->prepare($sql);
$stmt->bindValue(':regist_date', '2024-02-14 21:00:00');
$stmt->bindValue(':regist_start', '2024-02-14');
$stmt->execute();
こうする
これなら動く。
「`」で解決したという話
$sql = "INSERT INTO `clients` (`regist_date`, `regist_start`) VALUES ( :regist_date, :regist_start)";
「’」じゃなくて「`」。間違えないように。
テーブル名、カラム名をそれぞれ「`」で囲む。これにより解決した。テーブル名は多分無関係。
使っちゃダメな記号は使ってないはずなんだけど、ダメだったという話。
スペースを削ってもいけた
$sql = "INSERT INTO clients (regist_date,regist_start) VALUES (:regist_date,:regist_start)";
()内の,区切り後のスペースを削った。
禁止文字にスペースがあるんで、それが干渉してたのかな、とも。だけど、別のファイルでは,区切りのあとにスペースが入ってても普通に動作してたんよな。
結局のところ
「`」で囲んどけば確実だろうという感じで。
文字数は増えるけど。
どうやって気づけたか
pypmyadmin上で「挿入」を行うと、SQLのコードが出る。
その時にテーブル名、カラム名が「`」で囲われてた。
それで思い立ってやってみたら動いた。
コメント