ext/mysql
PHP 7.0がコアから関数を削除したので、今すぐ切り替えるのに良い時期です。
次のレガシーコードを検討してください
$res = mysql_query($sql);
関数は、開いている接続を使用するというmysql_
点で怠惰でした。しかしmysqli_
、それは怠惰であるだけでなく、オブジェクトであり、接続リソースではありません(これがmysql_connect()
返されるものです)。データベースに接続するには、ここでこれらの行を見てください
$mysqli = new mysqli('host', 'username', 'password', 'db');
$mysqli = mysqli_connect('host', 'username', 'password', 'db');
それらの両方があなたに同じことを与えます...
MySQLサーバーへの接続を表すオブジェクトを返します。
はい、そうです。手続き型接続関数でさえ、オブジェクトを返します。それを直接使用する最も簡単な方法は、オブジェクト形式です
$mysqli->query($sql);
手続き型関数は、このための単なるラッパーです。しかし、彼らは怠惰ではありません。違いを確認してください
mysqli_query($mysqli, $sql);
この中で最大の落とし穴(単純な検索と置換が失敗する理由mysql_
)mysqli_
は、ほとんどの関数で最初の引数として接続オブジェクトmysqli_
を渡す必要があることです。結果もオブジェクト(mysqli_resultクラス)であることに注意することも重要ですが、それらの手続き型の対応物は結果セットのみを必要とするため、それらを簡単に検索/置換できます。
完全を期すために、あまり一般的ではないもう1つの落とし穴があります(これは本当に古いコードです):mysql_result。この関数には、に相当するものはありませんmysqli_
。次のような全行戻り関数に切り替える必要がありますmysqli_fetch_assoc($result)