私の Web アプリケーションはクライアントから URL オブジェクトを取得しmcrypt_encrypt
、. この全体は、以下に示すように行われます。
/* $copied below is received from user and can be any string. But I'm just using a URL as example,as that's where it fails */
$copied = "http://www.google.com"
$encCopied = mcrypt_encrypt(MCRYPT_RIJNDAEL_128,$encryption_key,$copied,MCRYPT_MODE_CFB);
$copystuff = "UPDATE LinkTable set copied='$encCopied'";
mysqli_query($db,$copystuff)
このコードを実行すると、最後の行の MYSQL クエリが「構文エラー」で失敗します。上記のphpで変数を手動で変更することを含む何時間ものデバッグの後、$copied
変数のコロン(「:」)が原因で発生することが最終的にわかりました$copied
。に変更$copied
するwww.google.com
と、SQL 構文エラーはスローされず、すべてが完璧に機能します。しかし、その後 に変更$copied
すると:www.google.com
、SQL で再び構文エラーが発生します。
このコードは、他のすべてのタイプの文字列に対して機能しますが、コロンが存在する場合にのみ失敗することに注意してください。私の仮定はmcrypt_encrypt
、コロンを MYSQL が処理できない実行不可能なものに暗号化することです。
表示されるエラーは、コロンがある場合は次のように
なります。 SQL 構文にエラーがあります。使用する正しい構文については、MySQL サーバーのバージョンに対応するマニュアルを確認してください。
なぜこれが起こっているのかについての情報はありますか? 現在、URL から部分を取り除いた後に URL を送信することで、アプリケーションを機能させてhttp://
います。
ありがとう。