mysqli_connect と mysql_connect の違い
先輩方、mysqli と mysql の違いを詳しく教えてくれる時間はありますか?初心者なので混乱しています。
mysqliを使用してデータベース出力をクエリすると文字化けが発生します。解決方法がわかりません。他の人が書いたコードを見ると、mysqlを使っている場合は、mysql_query("set names 'GBK'")でエンコードを変更できますが、これを直接mysqli_query("set names 'GBK'")に変更するとエラーになります。通報されてしまいますが、どうしようもありません。
-----解決策---------
mysqli_set_charset('データベースに接続', '設定したエンコーディング');
-----解決策---------------------------- ---
1: Mysqli.dll は、データベースをオブジェクトまたはプロシージャの形式で操作できるようにするデータベースであり、その使用も非常に簡単です。ここでは、いくつかの一般的な操作と mysql.dll の比較を示します。
1: mysql.dll (機能的な方法として理解できます):
$conn = mysql_connect('localhost', 'user', 'password') //mysql データベースに接続します
mysql_select_db('data_base') //データベースを選択します
$result = mysql_query('select * from data_base');//ここには 2 番目のオプションのパラメータがあり、開いている接続を指定します
$row = mysql_fetch_row($result)) //簡単にするために、ここでは 1 行のデータのみを取得します
echo $row[0] //最初のフィールドの値を出力します
Mysqli にも手続き型メソッドがありますが、mysqli の接頭辞で始まるだけで、他はほぼ同じです。 mysqli が手続き型で動作する場合、一部の関数は mysqli_query (リソース識別子、SQL ステートメント) などのリソースを指定する必要があり、リソース識別子のパラメーターは前に配置されますが、mysql_query (SQL ステートメント、「オプション」) のパラメーターは前に配置されます。リソース識別子は最後に配置され、デフォルトで最後に開かれた接続またはリソースになります。
2mysqli.dll (オブジェクトモード):
$conn = new mysqli('localhost', 'user', 'password','data_base');
//ここでの接続は新しいものです。最後のパラメータはデータベースを直接指定するものであり、mysql_select_db() は必要ありません。
//構築時に指定することもできません。その場合は $conn -> select_db('data_base')
$result = $conn -> query( 'select * from data_base' );
$row = $result -> fetch_row() // データの行を取得します
echo row[0] //最初のフィールドの値を出力します
2: mysql_fetch_row()、mysql_fetch_array()
これら 2 つの関数は配列を返します。違いは、最初の関数によって返される配列には $row[0],
のみが含まれることです。
$row[1]、このように、データは配列添字を使用して読み取られ、mysql_fetch_array() によって返される配列には最初のタイプとキー値
の両方が含まれます。
正しい形式では、次のようにデータを読み取ることができます (データベースフィールドがユーザー名、パスワードの場合):
$row['ユーザー名']、$row['パスワード']
また、($row as $kay => $value) で操作すると、データベースのフィールド名を直接取得することもできます。
さらに重要なのは、mysqli は php5 によって提供される新しい関数ライブラリであり、(i) は改良されており、その実行速度が高速化されています。
----------------------------------------
SQL エラーは、mysqli を間違って呼び出していることが原因です
参照:
$conn = new mysqli('localhost', 'user', 'password','data_base');
//ここでの接続は新しいものです。最後のパラメータはデータベースを直接指定するものであり、mysql_select_db() は必要ありません。
//構築時に指定することもできません。その場合は $conn -> select_db('data_base')
$result = $conn -> query( 'select * from data_base' );