前提・実現したいこと
さきほど質問をしたものの続きなのですが、
CentOS7のVPSにてPHPのソースコードでphpMyAdminへの接続ができない
こちらのベストアンサーに対する私の疑問をお答えいただきたいです。
内容を抜粋すると
疑問なのですが、パソコン上のテスト環境では、以下の3通りの記法で動作していました。
1.$stmt = $db->prepare("INSERT INTO test (name) VALUES ($test)");
$stmt->execute();2.$stmt = $db->prepare("INSERT INTO test (name) VALUES (:test)");
$params = array(':test' => $test);
$stmt->execute($params);3.$stmt = $db->prepare("INSERT INTO test (name) VALUES (:test)");
$stmt->bindValue(':test', $test);
$stmt->execute();サーバー上ではこれらの記法は正常に読み込まれないということでしょうか?それとも、MariaDB特有のものなのでしょうか?
また、
"INSERT INTO (username, password, secret_question) VALUES (?)"
のように、複数の場合はVALUESのあとはどのように書けば良いのでしょうか?
現在の状況を説明しますと、テスト環境では、抜粋文の3つの記法でソースコードが正しく動いていました。しかし、サーバー側では、
PHP
1$stmt = $db->prepare("INSERT INTO test (name) VALUES (?)"); 2$stmt->execute([$test]);
このようにクエスチョンマークを使った記法でないと動かないということがわかりました。
パソコン上で動かしたテスト環境では、
- MAMPを利用
- MySQLはInnoDBを利用
このような条件でした。その一方で、サーバー上では
- CentOS上でhttpdを利用
- MySQLはMariaDBを利用
このような違いがあります。
疑問1.
なぜ、クエスチョンマークを使った記法でないと動かないのでしょうか?
そして、先ほど回答いただいたように一つの変数だけをINSERTするのであれば、ひとつのクエスチョンマークで良いですが、大体の場合は複数の変数をINSERTするのが一般的だと思います。
疑問2.
複数の変数をクエスチョンマークとしてPDOで記述する場合はどのように扱えば良いのでしょうか?
ご回答いただけると嬉しいです。
よろしくお願いいたします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/07/20 05:39