2

誰かが私を正しい方向に向けてください。MySqlからに移行中MySqliです。通常、以下のコードを使用してデータベースから選択すると、列の値を作業変数として簡単に使用できるようになります。

$SQLCommand = "SELECT * FROM table WHERE column1 = 'ok'";
$Data = mysql_query($SQLCommand);
$DataRow = mysql_fetch_assoc($Data);

$var1 = $DataRow["column1"];
$var2 = $DataRow["column2"];
$var3 = $DataRow["column3"];
$var4 = $DataRow["column4"];

同等の方法を調査しましたが、MySqlループなどを使用してさまざまな方法があることがわかりました。同じことを行うようなもの(より良い説明が必要なため)はありますか?前もって感謝します。

4

4 に答える 4

2

直接変換は次のようになります。

$Data = mysqli_query($connection, $SQLCommand);
$DataRow = mysqli_fetch_assoc($Data);

以外の違いimysqli_query、接続を引数として必要とすることです (ほとんどのmysqli_*関数と同様)。

MySQLi にはオブジェクト指向スタイルもあります。

$Data = $connection->query($SQLCommand); // assuming you created the $connection object
$DataRow = $data->fetch_assoc();
于 2013-06-19T12:18:07.280 に答える
1

彼らは次のようにする必要があります

$mysqli = new mysqli("localhost", "my_user", "my_password", "my_db");
$SQLCommand = "SELECT * FROM table WHERE column1 = 'ok'";
$Data = $mysqli->query($SQLCommand);   
$DataRow = $mysqli->fetch_assoc($Data);

このリンクを試す

于 2013-06-19T12:15:10.153 に答える
0

私の提案は、SQL インジェクションを防ぐためにユーザー入力を使用している場合は常に mysqli 準備済みステートメントを使用することです。

以下のコードでは、オブジェクト指向のアプローチと準備済みステートメントを使用しています。

<?php
$mysqli = new mysqli("example.com", "user", "password", "database");
if ($mysqli->connect_errno) {
    echo "Failed to connect to MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error;
}

if (!$mysqli->query("DROP TABLE IF EXISTS test") ||
!$mysqli->query("CREATE TABLE test(id INT, label CHAR(1))") ||
!$mysqli->query("INSERT INTO test(id, label) VALUES (1, 'a')")) {
    echo "Table creation failed: (" . $mysqli->errno . ") " . $mysqli->error;
}
/* Prepared statement, stage 1: prepare */
$stmt = $mysqli->prepare("SELECT id, label FROM test WHERE id = ?");

/* Prepared statement, stage 2: bind and execute */    
$id = 1;
//note below "i" is for integer, "s" can be used for string
if (!$stmt->bind_param("i", $id)) {
    echo "Binding parameters failed: (" . $stmt->errno . ") " . $stmt->error;
}
$stmt->execute();
$res = $stmt->get_result();
$row = $res->fetch_assoc();

printf("id = %s (%s)\n", $row['id'], gettype($row['id']));
printf("label = %s (%s)\n", $row['label'], gettype($row['label']));
?>
于 2013-06-19T12:25:31.383 に答える