0

次のコードに構文エラーがありますが、見つかりません。

$tableSelect = $_POST["tableSelect"];
$companyName = $_POST["companyName"];
$telephone = $_POST["telephone"];
$fax = $_POST["fax"];
$email = $_POST["email"];
$address = $_POST["address"];
$postcode = $_POST["postcode"];
$category = $_POST["category"];
$contact = $_POST["contact"];
$contactTel = $_POST["contactTel"];
$contactEmail = $_POST["contactEmail"];
$sql = "INSERT INTO '" . $tableSelect . "' ('" . $companyName . "', '" . $telephone . "', '"
    . $fax . "', '" . $email . "', '" . $address . "','" . $postcode . "', '" . $category . "',
    '" . $contact . "', '" . $contactTel . "', '" . $contactEmail . "')";
mysqli_query($con,$sql);
if (!mysqli_query($con,$sql)) {
    die('Error: ' . mysqli_error($con));
}

乾杯!

編集:コードを次のように変更しました:

$sql = "INSERT INTO `" . $tableSelect . "` (name, telephone, fax, email, address, postcode, category,
    contact, contactTel, contactEmail) VALUES (`" . $companyName . "`, `" . $telephone . "`, `"
    . $fax . "`, `" . $email . "`, `" . $address . "`,`" . $postcode . "`, `" . $category . "`,
    `" . $contact . "`, `" . $contactTel . "`, `" . $contactEmail . "`)";

「エラー: 'フィールド リスト' の不明な列 [companyName]」というエラーが表示されます。ここで、[companyName] はフォームから送信された値です。しかし、確かに列を「名前」として定義しましたか?

編集 2:ありがとうございます。インジェクションの問題を認識しました。機能させたいので、準備済みステートメントを使用するように変更します。

4

6 に答える 6

2

valuesステートメントまたはステートメントのいずれかが必要ですselect

"INSERT INTO '" . $tableSelect . "' VALUES ('" . $companyName . "', '" . $telephone . "', '"
. $fax . "', '" . $email . "', '" . $address . "','" . $postcode . "', '" . $category . "',
'" . $contact . "', '" . $contactTel . "', '" . $contactEmail . "')";

ただし、insertステートメントに列名を含めることもお勧めします。

"INSERT INTO '" . $tableSelect ."(companyname, telephone, fax, email, address, postcode, category, contact, contactTel, contactEmail) ".
  "' VALUES ('" . $companyName . "', '" . $telephone . "', '"
. $fax . "', '" . $email . "', '" . $address . "','" . $postcode . "', '" . $category . "',
'" . $contact . "', '" . $contactTel . "', '" . $contactEmail . "')";

それらが正しい名前かどうかはわかりません。

于 2013-09-06T11:12:09.790 に答える
1

挿入クエリの構文を確認してください

プログラムにがありません:

以下の構文に従います。

INSERT INTO table_name (column1, column2, column3,...)
VALUES (value1, value2, value3,...)
于 2013-09-06T11:15:20.880 に答える
1

テーブル名を引用するときは、ストレート クォーテーションではなくバッククォーテーション ` を使用します。

それ以外の:

'" . $companyName . "'

これ:

`" . $companyName . "`

変数を直接クエリに入れる代わりに、準備されたステートメントを使用します。そして、テーブル名が正しいことを確認してください。これは、SQL インジェクションに対して開かれているためです。

PHPでSQLインジェクションを防ぐにはどうすればよいですか?

于 2013-09-06T11:12:08.850 に答える
0

以下のクエリを試してください:

$sql = "INSERT INTO $tableSelect ('" . $companyName."', '".$telephone."',
'".$fax."', '".$email."', '".$address."', '".$postcode."', '".$category."',
'".$contact."', '".$contactTel."', '".$contactEmail."')";

それでもエラーが発生する場合は、mysql_real_escape_string() 関数を使用する必要があります。
データには特殊文字が含まれる場合があります。

于 2013-09-06T11:16:50.500 に答える
0

このようなクエリを試してください

$query="insert into abc (a,b,c) values ('a','b','c')

and first check your all variables using isset()
于 2013-09-06T11:10:24.063 に答える