他の人はすでにあなたに答えを与えています。追加するには、列名を引用符で囲むか、引用符を完全に削除する必要があります。
変更:
INSERT INTO orders ('name', 'tacoOrder')
^ ^ ^ ^
に
INSERT INTO orders (`name`, `tacoOrder`)
または
INSERT INTO orders (name, tacoOrder)
または完全な答えとして:
$name = $_POST['name'];
$tacoOrder = $_POST['tacoOrder'];
$query = "INSERT INTO orders (`name`, `tacoOrder`) VALUES ('$name', '$tacoOrder')";
補足:バッククォートは必須ではありませんが、列名に一重引用符は使用できません。私自身が列名の周りにバッククォートを使用するのは、単なる習慣の力です。
さらに、この $ mysql_close();
$
があってはなりません mysql_close
の前 しかし、 $ link
角かっこ内:
mysql_close($ link);
に変更します
しかし、エイリアン氏が指摘したように、 mysql_close()
の変数
オプションです(ありがとうございます)
)
もありません if(!mysql_query($ query)
if(!mysql_query($ query))
と読み替えてください。
mysqli _ *
への切り替えを検討してください プリペアドステートメントまたはPDOを使用する関数。 mysql _ *
関数は廃止され、将来のリリースから削除されます。
完全な書き直し:(テスト済み と私のサーバーで作業しています)
<?php
define('DB_NAME', 'tacoPractice');
define('DB_USER', 'root');
define('DB_PASS', 'root');
define('DB_HOST', 'localhost');
$link = mysql_connect(DB_HOST, DB_USER, DB_PASS);
if(!$link)
{
die('Could not connect to database: ' . mysql_error());
}
$db_select = mysql_select_db(DB_NAME);
if(!$db_select)
{
die('Can\'t use ' . DB_NAME . ': ' . mysql_error());
}
echo "HOLY EFF";
$name = $_POST['name'];
$tacoOrder = $_POST['tacoOrder'];
$query = "INSERT INTO orders (name, tacoOrder) VALUES ('$name', '$tacoOrder')";
if(!mysql_query($query))
{
die("DAMMIT");
}
else{ echo "Success"; }
mysql_close();
?>
少し異なるこの方法を使用することもできます:
$query = mysql_query("INSERT INTO orders (name, tacoOrder) VALUES ('$name', '$tacoOrder')");
if (!$query) {
die('Invalid query: ' . mysql_error());
}
else{ echo "Success"; }
脚注:
フォーム要素が空のままかどうかをチェックしていないため、空のデータエントリを取得するリスクがあります。
次のような条件文を使用できます:
if(!empty($_POST['name']) || !empty($_POST['tacoOrder']))
{
// continue with code processing
}
さらに、Awladが彼の答え
で言及しているものを使用してください
mysql_real_escape_string()
の使用に関して
SO PHPでSQLインジェクションを防ぐにはどうすればよいですか?コード>
これが(基本的な) mysqli _ *
です mysqli_real_escape_string()
を使用したベースのメソッド 関数と、フィールドのいずれかが空かどうかを確認するための条件ステートメント。
フィールドの1つを空のままにすると、クエリは実行されません。
<?php
define('DB_NAME', 'tacoPractice');
define('DB_USER', 'root');
define('DB_PASS', 'root');
define('DB_HOST', 'localhost');
$link = mysqli_connect(DB_HOST, DB_USER, DB_PASS);
if(!$link)
{
die('Could not connect to database: ' . mysqli_error());
}
$db_select = mysqli_select_db($link,DB_NAME);
if(!$db_select)
{
die('Can\'t use ' . DB_NAME . ': ' . mysqli_error());
}
echo "HOLY EFF";
$name = mysqli_real_escape_string($link,$_POST['name']);
$tacoOrder = mysqli_real_escape_string($link,$_POST['tacoOrder']);
if(!empty($_POST['name']) || !empty($_POST['tacoOrder'])){
$query = "INSERT INTO orders (name, tacoOrder) VALUES ('$name', '$tacoOrder')";
if(!mysqli_query($link,$query))
{
die("DAMMIT");
}
else{ echo "Success"; }
mysqli_close($link);
}
?>