2009-05-11 15 views
-2

行はテーブルに挿入され、その行のIDはその特定のエントリの名前と姓の比較によって選択されます。誰かがこの短いコードを見直してもらえますか?

返されたIDは、その後、別のテーブルに挿入されています。重要なコメントの

$result = false; 

$result = mysql_query("INSERT INTO `reunie` (`naam`, `van`,`nooiensvan`, `selfoon`, `email`, `bywoon`, `metgesel_naam`, `spesifieke_onderwysers`, `spesifieke_musiek`, `bydrae`, `voorstelle`) VALUES ('$naam','$van','$nooiensvan','$selfoon','$email','$bywoon','$metgesel','$spesifiekeOnderwysers','$musiek','$bydrae','$voorstelle')") or die(mysql_error()); 

// sleep in order for query to finish 
while ($result === false) { 
    sleep(1); 
} 

$result = mysql_query("SELECT `id` FROM `reunie` WHERE `naam` = '$naam' AND `van` = '$van' ORDER BY `id` DESC LIMIT 1") or die(mysql_error()); 

//編集

みんなありがとうを。私にいくつかの重要な点を教えてくれてありがとう。

+6

を停止します。あなたはどんな問題を抱えていますか? – NotMe

+0

本当の質問ではないので、投票を終了してください。あなたは特定の質問をすることができますか?もしあなたが特に心配しているこのコードの部分はありますか? –

+0

時には、1人のユーザーが 'lid'テーブルではなく 'reunie'テーブルに追加されるだけです(これは 'SELECT'クエリの上に表示されます)ので、 'INSERT INTO'正しい挿入されたIDを取得するには 'SELECT'を押してください。だからこそ、「INSERT」が終わるまで待つためにスリープ機能をそこに置いています。 これはうまくいくと思いましたが、明らかにそうではありませんでした。 –

答えて

11

てみ使用しない:

$name = mysql_real_escape_string($name); 
$van = mysql_real_escape_string($van); 
$nooiensvan = mysql_real_escape_string($nooiensvan); 
$selfoon = mysql_real_escape_string($selfoon); 
$email = mysql_real_escape_string($email); 
$bywoon = mysql_real_escape_string($bywoon); 
$metgesel = mysql_real_escape_string($metgesel); 
$spesifiekeOnderwysers = mysql_real_escape_string($spesifiekeOnderwysers); 
$musiek = mysql_real_escape_string($musiek); 
$bydrae = mysql_real_escape_string($bydrae); 
$voorstelle = mysql_real_escape_string($voorstelle); 
$query = <<<END 
INSERT INTO reunie 
(naam, van, nooiensvan, selfoon, email, bywoon, metgesel_naam, 
spesifieke_onderwysers, spesifieke_musiek, bydrae, voorstelle) 
VALUES 
('$naam','$van','$nooiensvan','$selfoon','$email','$bywoon','$metgesel', 
'$spesifiekeOnderwysers','$musiek','$bydrae','$voorstelle') 
END; 
$result = mysql_query($query) or die(mysql_error() . ' - ' . $query); 
$id = mysql_insert_id(); 

そして、はい、これらすべてのmysql_real_escape_stringのは()本当に重要です。 $結果は本当に偽の場合

+8

または、1000回の手動エスケープによる死亡を避けるには、mysqliを使用します。 – millimoose

+0

+1:包括的で安全な解決策 –

+2

残念ながら、mysqliは不安定で、私はそれを使用していません。これはLONG​​TEXTの列では機能しません。これは、PHPチームが何度も試行しても3年後には認識さえします。そして、時にはmysql_ *がうまく動作するところで私がsegfaultingすることがあります。 – cletus

5

IDを取得するためにselectを実行する代わりに、mysql_insert_idを使用する必要があります。

+0

ありがとう、マイケル、私は今それをやるでしょう。 –

1

ここでホイールを再発明しようとしていませんか?

なぜ

$result = mysql_query("INSERT ... "); 
$new_id = mysql_insert_id(); 
+0

ありがとう、meouw、私はその機能を知らなかった。 –

1
// sleep in order for query to finish 

while ($result === false) { 
    sleep(1); 
} 

私はどのように愛、スクリプトはちょうどあなたがそこにスリープ機能を持っている理由私は正確にはわからない

+2

実際にはfalseの場合、スクリプトは直ちに停止します。 ... ae '、' $ voorstelle ') ")またはdie(mysql_error()); 睡眠機能が完全に役に立たないので –

+0

Nickとnamehtありがとう、このフォーラムは人々を壊していたことを知らなかった。 –

+2

あなたはもっと無礼になるかもしれませんか? –

関連する問題