-2

この同様の質問にはかなりの数の投稿がありますが、PHP と MySQL の組み合わせに関する私のコードについては、まだ明確な答えを得ることができません。フォームを送信した後、常にエラー メッセージが表示されます。間違いなく構文に関連しています。興味深いことに、mysql は文句を言わず、私の apache も文句を言いませんでしたが、私のブラウザ (firefox) ではそうでした。

$add_master_sql = "INSERT INTO master_name (date_added, date_modified, f_name, l_name)
VALUES (now(), now(), '".$_POST["f_name"]."', '".$_POST["l_name"]."')";
$add_master_res = mysqli_query($mysqli, $add_master_sql) or die(mysqli_error($mysqli));

私のMYSQLコードは次のとおりです。

CREATE TABLE master_name (
  id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
  date_added DATETIME,
  date_modified DATETIME,
  f_name VARCHAR (75),
  l_name VARCHAR (75)
);

引用に何か関係があるかもしれませんが、一致を再確認しましたが、問題ありません。誰でも私を助けてくれますか?

4

2 に答える 2

3

さらに重要なのは、SQL インジェクションの可能性を回避するために、pdo で準備されたクエリを使用することです。

<?php
// configuration
$dbtype     = "sqlite";
$dbhost             = "localhost";
$dbname     = "test";
$dbuser     = "root";
$dbpass     = "admin";

// database connection
$conn = new PDO("mysql:host=$dbhost;dbname=$dbname",$dbuser,$dbpass);

// new data
$dateAdded = getdate();
$dateModified = getdate();
$f_name = $_POST["f_name"];
$l_name = $_POST["l_name"];

// query
$sql = "INSERT INTO master_name (date_added, date_modified, f_name, l_name) VALUES (:f_name, :l_name, :dateAdded, :dateModified)";
$q = $conn->prepare($sql);
$q->execute(array(':dateAdded'=>$dateAdded ,
                  ':dateModified'=>$dateModified,
                  ':f_name'=>$f_name,
                  ':l_name'=>$l_name));    

?>
于 2012-04-29T06:58:33.143 に答える
-1

'フィールドリスト'の不明な列'アドレス'

'フィールドリスト'で列'address'を使用しているクエリを検索します。
ここに投稿したものは、明らかにこのエラーを発行したものではありません。
に変更die(mysqli_error($mysqli));します

trigger_error(mysqli_error($mysqli));

ページ上のすべてのクエリについて
、エラーが発生した特定の場所を確認します。

また、クエリに入力したすべての変数を引用符で囲まれた文字列としてエスケープするmysqli_real_escape_stringか、SQLインジェクションから他のすべての変数を保護するか、プリペアドステートメントとして挿入する必要があることにも注意してください。

あなたの本があなたにそれを教えていないなら-それを燃やしてください!

于 2012-04-29T07:21:19.907 に答える