2016-05-01 14 views
0

'シンボルをデータベースに挿入しようとしていますが、以下のコードがあります。mysql_real_escape_stringが動作しないのはなぜですか?

$actionurl =$_POST['actionurl']; 
$newtitle = $_POST['newtitle']; 
$newtitle = mysql_real_escape_string($newtitle); 
$result2 = mysql_query("UPDATE links SET title='$newtitle' WHERE url='$actionurl'") 
    or die(mysql_error()); 

そして、私はこのエラーを取得

あなたのSQL構文でエラーが発生しています。あなたのMySQLサーバのバージョンに対応するマニュアルをチェックして、正しい構文を使って、近くにあるサンプルライブラリ(フォーラムスレッド)を1行目で起動してください ''

なぜ私は変数にmysql_real_escape_stringを使用していますか?

+4

なぜ、非推奨APIを使用するのですか。 Prepared Statementsを使用すると、問題はなくなります。 –

+0

レコードの場合、あなたは実際に 'newtitle'フィールドを使って' ''を挿入していますが、 '' actionurl''を使用していませんか? – Rick

+2

[mysql_ *]を使用しないでください(http://stackoverflow.com/questions/12859942/why-shouldnt-i-use-mysql-functions-in-php?rq=1)。 mysql_ *関数は時代遅れであり、非推奨です(http://us3.php.net/manual/en/intro.mysql.php)。 ['MySQLi'](http://us3.php.net/manual/en/book.mysqli.php)または[' PDO'](http://us3.php.net/manual/en/intro。 pdo.php)を使用し、準備済みの文を使用します。 @juergendによれば、これはよりよいアプローチであり、あなたの問題を解決します。 –

答えて

-1

php.iniにマジック引用符がありますか?はいの場合は、無効にすると問題が解決するはずです。 (デフォルトで有効にすることができます)

+0

魔法の引用符はありません。 – desbest

+0

http://php.net/manual/en/security.magicquotes.disabling.php - あなたのphp.iniに推奨行を追加してください - あなたのシステムでデフォルトでマジッククォートが有効になっていると思いますApacheを再起動します。 –

+0

この投稿に投票する代わりに、私の提案を本当に試しましたか?私は、現在mysql_interfaceの代わりにPDOを使用するのが最善であると他の人に同意しますが、このポストでの動作の本当の原因は実際にはマジック引用に関連するはずです。このウェブサイトでも、まったく同じ動作と同じ説明で他の投稿を見つけることができます。 –

1

私はそれが$ newtitleではなく、エラーの原因となっていると思われます。

これをデバッグするには、実行するSQL文をエコーまたは印刷します。

あなたはこのような何かを行うことができます。他の人のよう

$sql = "UPDATE links SET title='$newtitle' WHERE url='$actionurl'"; 
// for debugging, output contents of the $sql string 
echo "SQL=" . $sql ; 
mysql_query($sql) or die(mysql_error(); 

が既に示唆している、mysql_インタフェースは廃止されました。新しい開発には、mysqliまたはPDOを使用する必要があります。また、バインドプレースホルダで準備されたステートメントを使用します。 2016年にmysql_real_escape_stringに苦労するのは無意味なようです。

+0

しかし、私はこのクラスで 'mysql_'をPHP 7で使うことができます。これは' mysql_'を 'mysqli_'に変換します。http://www.phpclasses.org/package/9199-PHP-Replace-mysql-functions-using-the- mysqli-extension.html – desbest

+0

PHP 7から削除されたmysql_関数を実装するために使用しているパッケージに問題があるようです。そのパッケージからの 'mysql_real_escape_string'の実装に問題がある可能性があります。 – spencer7593

関連する問題