2012-04-27 23 views
1

挿入または更新しようとすると、データベースに何も書き込まれません。 これは、テーブルレイアウトクエリの挿入/更新

(
`id` int(11) NOT NULL AUTO_INCREMENT, 
`user_id` int(11) NOT NULL, 
`thesis_Name` varchar(200) NOT NULL, 
`abstract` varchar(200) NOT NULL, 
`complete` int(2) NOT NULL DEFAULT '1', 
PRIMARY KEY (`id`), 
KEY `user_id` (`user_id`) 
) 

あなたはIDが一意のキーで見ることができるようです。 user_idはセッションが参照するものです。私はuser_idが2つの行を持つことができるようにしたいので、idだけがユニークでなければならないので、それは挿入するか更新するかを探すキーでなければなりません。それは、その後のuser_idがあまりにもユニークであることができnoway周りに存在する場合は、ユーザーごとに、

​​

1行のみを

+2

のように、PHPのロジックに基づいて使用することを問い合わせるかを決めるのですか?エラーは報告されていますか?あなたの具体的な質問は何ですか?それとも、あなたと一緒に推測に加わるべきですか? – hakre

+8

神の愛のために、パラメータ化されたクエリを使用する –

+3

キースが何を意味するのか、なぜ彼がそれを言っているのかわからない場合は、[Bobby Tables](http://bobby-tables.com)を参照してください。 – eggyal

答えて

1

はあなたが私たちの最後のクエリを表示することができます: これは私が使用している何ですか?たぶん

echo $query 

あなた$abstractで簡単な引用:$query = sprintf(...)後にこのようなものでは?あなたはそれをadvoidするmysql_real_escape_string()を使用することができます。

$thesis_Name = mysql_real_escape_string($thesis_Name); 
$abstract = mysql_real_escape_string($abstract); 
0
  1. は、MySQLからエラーを取得するには、mysql_error()機能を使用する必要があります。
  2. あなたはクエリに配置されている文字列をエスケープする必要があります。
  3. ここではsprintf()の使用はありません。

$user_id  = intval($_SESSION['user_id']);  
$id   = mysql_real_escape_string($_POST['id']); 
$thesis_Name = mysql_real_escape_string($_POST['thesis_Name']); 
$abstract = mysql_real_escape_string($_POST['abstract']); 

$query  = "INSERT INTO thesis (id, user_id, thesis_Name, abstract) 
       VALUES ('$id','$user_id', '$thesis_Name', '$abstract') 
       ON DUPLICATE KEY UPDATE 
        `thesis_Name` = VALUES(`thesis_Name`), 
        `abstract` = VALUES(`abstract`)"; 

mysql_query($query) or trigger_error(mysql_error()." ".$query); 

mysql *関数を使用している場合。

しかし、これは非常に珍しいアプローチ
は通常、私たちは何が起こるこの

if ($_POST['id']) { 
    $query = "INSERT..." 
} else { 
    $query = "UPDATE..." 
} 
+0

あなたが助けてくれてありがとうと私はちょうどautoincの値が作成されたときに作成されます。これは挿入を追加しますが、挿入した内容を更新するのではなく、別の行(same_idと別のID)を追加します。 – user1296762

+0

ユーザーIDを最初にユニークキーとして取得しました。 –

+0

トップコードでは2番目の行は追加されませんが、データは変更されません。保存を押すと、正しいページにリダイレクトされます。コードの2番目の部分を試してみることをお勧めしますか? – user1296762

関連する問題