2

MYSQL テーブルに値を挿入する関数が PHP にあります。

function insertRow($db, $new_table, $ID, $Partner, $Merchant)
{
    $insert = "INSERT INTO " .$new_table. " VALUES(number, "string", "string")"
    $q = mysqli_query($db, $insert);
}

VALUES 部分のカスタマイズに苦労しています。数値、文字列、および文字列を、それぞれ PHP の ID、パートナー、およびマーチャント変数にする必要があります。

私はもう試した

function insertRow($db, $new_table, $ID, $Partner, $Merchant)
{
    $insert = "INSERT INTO " .$new_table. " VALUES(" .$ID . $Partner . $Merchant . ")";
    $q = mysqli_query($db, $insert);
}

同じように。しかし、SQL では文字列値を引用符で囲む必要があるため、うまくいかないようです。しかし、コードを変更して ."$ID" . "$パートナー" . "$Merchant" . ")"; したがって、変数は必要に応じて引用符で囲まれ、PHP 変数ではなくなります。SQL を正しく実行できるように、PHP 変数を引用符で囲むにはどうすればよいですか?

4

7 に答える 7

4

連結を使用した他の答えは単純なものです。最善の方法は、準備済みステートメントを使用することです。これにより、コードが大幅に安全になります。

$insert = "INSERT INTO " .$new_table. " VALUES(?, ?, ?)";
$q = mysqli_prepare($db, $insert);
mysqli_stmt_bind_param($q, "iss", $ID, $Partner, $Merchant);
mysqli_stmt_execute($q);

パラメータ化されたクエリを実行すると、クエリとデータが別々に送信されます。これは、クエリの構造が既に存在しているため、データに挿入された他のものによって変更できないことを意味します。つまり、SQL インジェクションから安全です。

PHP マニュアルを参照してください。

于 2012-06-22T19:54:47.790 に答える
0

これを試して:

$insert = "INSERT INTO $new_table VALUES(number, '{$string}', '{$string}')";
于 2012-06-22T19:51:23.087 に答える
0

連結

$insert = "INSERT INTO " .$new_table. " VALUES(".$ID.", '".$Partner."', "."'"$Merchant"')";
于 2012-06-22T19:49:02.493 に答える
0

これを試して:

function insertRow($db, $new_table, $ID, $Partner, $Merchant)
{
    $insert = "INSERT INTO " .$new_table. " VALUES( '" .$ID."','" . $Partner."','". $Merchant . "')";
    $q = mysqli_query($db, $insert);
}

または、使用できます

function insertRow($db, $new_table, $ID, $Partner, $Merchant)
{
    $insert = "INSERT INTO " .$new_table. " VALUES( '$ID','$Partner','$Merchant')";
    $q = mysqli_query($db, $insert);
}
于 2012-06-22T19:49:02.563 に答える
0

うーん... クエリであっても、他のものと同じように単なる文字列であるという事実に違いはありません。あなたは$new_table価値を追加することができたのに、他のことをするのを妨げているのは何ですか?

$insert = "INSERT INTO ".$new_table." VALUES (".$ID.", '".$Partner."', '".$Merchant.")";

これは、値をサニタイズするために必要な手順を既に行っていることを前提としています。

于 2012-06-22T19:49:19.140 に答える
0
$insert = "INSERT INTO $new_table VALUES($ID,'$Partner','$Merchant')";
于 2012-06-22T19:52:55.540 に答える