12

PHP バージョン 5.3 をコードで使用しようとしてmysql_real_escape_string($unescaped_string)いますが、次のエラーが発生します。

Fatal error: Call to undefined function mysql_real_escape_string() 
in /var/www/engine/database.php on line 38

ただし、データベースにはまだ接続できます。なぜ利用できないのですか?

PHP バージョン 5.3 を使用しています。

4

5 に答える 5

19

コメントに記載されmysql_ている更新は、5.5 から廃止されました。

mysql 拡張モジュールは、PHP 5.5 から非推奨になりました。代わりに mysqli または PDO 拡張機能を使用する必要があります。非推奨はmysql_deprecationで決定されており、この決定の背後にある理由についての議論を見つけることができます。

PHP 7で削除されました


mysql_real_escape_string()MySQL 関数「バッチ」の標準部分であり、拡張機能が正しくロードされている場合は常に機能するはずです。

他にmysql_機能する機能はありますか?(そうすべきではありません)

でこの行のコメントを外していることを確認してくださいphp.ini:

extension=mysql.so

また、代わりにmysqliorを使用するのが賢明です ( is deprecated )。どちらもエスケープを処理できます。PDOmysql_

于 2012-12-13T09:24:07.340 に答える
0

たぶんあなたの問題はphpサーバーの設定(コンパイル)にあります。

mysql_real_escape_stringの詳細については、次を参照してください: http ://www.php.net/manual/en/function.mysql-real-escape-string.php

于 2012-12-13T09:32:41.407 に答える
0

PHP 5.5 以降、MySQL 拡張モジュールは非推奨になりました。したがって、mysql_real_escape_string() は PHP 7 では使用できません。これは、ユーザー入力を正しくエスケープできず、コードが SQL インジェクション攻撃に対して無防備なままになることを意味します。

PHP 公式の解決策は、ext/mysql を MySQLi、PDO、またはその他のサポートされているデータベース拡張機能に置き換えることです。

SQL インジェクション攻撃を防ぐには、データベースと通信するときに、準備されたステートメントとパラメーター化されたクエリを使用することをお勧めします。

于 2016-02-21T13:15:53.700 に答える