[php+mySQL]INSERTできないときの対処法

局所的だけど。

環境

お名前.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のコードが出る。

その時にテーブル名、カラム名が「`」で囲われてた。

それで思い立ってやってみたら動いた。

コメント

タイトルとURLをコピーしました