0

わかりました、2日で2番目の質問...私はおそらくここで新しい間違いを犯していますが、私は立ち往生しています。

「名前」列の下のテーブルにドメイン名を挿入しようとしています。すべての変数がエコーアウトするので、変数が渡されて設定されていることがわかります。

挿入は次のとおりです。

$newDomain = $_POST['newDomain']; //Get domain name
$newDomain_query =  mysql_query("INSERT INTO virtual_domains (name) VALUES ($newDomain)");
header("Location: domain_detail.php?domain=".$newDomain);

私はこのスクリプトを書く多くの方法を試しましたが、次のものを含めると毎回同じ結果が得られます。

or die(mysql_error)

スクリプトで。クエリは実行されず、ダイパーツを取り出すと、ヘッダーの場所にジャンプします。

4

3 に答える 3

3

挿入ステートメントでは、文字列を引用符で囲むようにする必要があります。

代わりにこれを試してください:

$newDomain = $_POST['newDomain']; //Get domain name
$newDomain_query =  mysql_query("INSERT INTO virtual_domains (name) VALUES ('$newDomain')");
header("Location: domain_detail.php?domain=".$newDomain);
于 2012-09-07T02:47:24.280 に答える
1

値の前後に引用符がありません。クエリは次のようになります。

"INSERT INTO virtual_domains (name) VALUES ('$newDomain')"
于 2012-09-07T02:46:35.843 に答える
1

Kenの回答を拡張して、mysql_real_escape_stringを使用して引用符のエスケープをmysqlに処理させることをお勧めします(特にpost / getを介して送信されるデータの場合)。あなたは以下でそうすることができます:

$newDomain = $_POST['newDomain']; //Get domain name
$newDomainEscaped = mysql_real_escape_string($newDomain);
$newDomain_query =  mysql_query("INSERT INTO virtual_domains (name) VALUES ('$newDomainEscaped')");
header("Location: domain_detail.php?domain=".$newDomain);

これにより、誰かが誤って「newDomain」にアポストロフィを付けたり、SQLインジェクションを悪化させたりした場合のエラーを防ぐことができます。

于 2012-09-07T02:58:47.033 に答える