0

行き詰まり、助けが必要です。これは比較的簡単なはずですが、数週間は私の悩みの種であり、あきらめようとしています。問題は、私が構築しているソーシャルネットワークのユーザー登録フォームです。ユーザーがデータベースにアドレスを入力するときに、スペースを+に置き換えるだけです。ユーザーがこのメールアドレスをアクティブ化したときに実行されるactivation.phpというページがあり、このコードブロックがページにあります...

   $sql = mysql_query("UPDATE myMembers SET email_activated='1' WHERE id='$id' AND password='$hashpass'"); 
   $sql = mysql_query("UPDATE myMembers SET firstname = REPLACE(firstname, ' ', '+'");
   $sql = mysql_query("UPDATE myMembers SET lastname = REPLACE(lastname, ' ', '+'");
   $sql = mysql_query("UPDATE myMembers SET housenumber = REPLACE(housenumber, ' ', '+'");
   $sql = mysql_query("UPDATE myMembers SET addressone = REPLACE(addressone, ' ', '+'");
   $sql = mysql_query("UPDATE myMembers SET addresstwo = REPLACE(addresstwo, ' ', '+'");
   $sql = mysql_query("UPDATE myMembers SET county = REPLACE(county, ' ', '+'");
   $sql = mysql_query("UPDATE myMembers SET city = REPLACE(city, ' ', '+'");
   $sql = mysql_query("UPDATE myMembers SET country = REPLACE(country, ' ', '+'");
   $sql = mysql_query("UPDATE myMembers SET postcode = REPLACE(postcode, ' ', '+'");
   $sql = mysql_query("UPDATE myMembers SET phone = REPLACE(phone, ' ', '+'");
   $sql_doublecheck = mysql_query("SELECT * FROM myMembers WHERE id='$id' AND password='$hashpass' AND email_activated='1'"); 
   $doublecheck = mysql_num_rows($sql_doublecheck); 

しかしもちろん、それは+でスペースを更新していません、私はどこかでトリックを逃していますか、それともこれは失敗する運命にあります!もちろん、よろしくお願いします!よろしく-P

4

2 に答える 2

7

どのREPLACE()呼び出しにも閉じ括弧はありません。

 $sql = mysql_query("UPDATE myMembers SET email_activated='1' WHERE id='$id' AND password='$hashpass'"); 
 $sql = mysql_query("UPDATE myMembers SET firstname = REPLACE(firstname, ' ', '+')");
 $sql = mysql_query("UPDATE myMembers SET lastname = REPLACE(lastname, ' ', '+')");
 $sql = mysql_query("UPDATE myMembers SET housenumber = REPLACE(housenumber, ' ', '+')");
 $sql = mysql_query("UPDATE myMembers SET addressone = REPLACE(addressone, ' ', '+')");
 $sql = mysql_query("UPDATE myMembers SET addresstwo = REPLACE(addresstwo, ' ', '+')");
 $sql = mysql_query("UPDATE myMembers SET county = REPLACE(county, ' ', '+')");
 $sql = mysql_query("UPDATE myMembers SET city = REPLACE(city, ' ', '+')");
 $sql = mysql_query("UPDATE myMembers SET country = REPLACE(country, ' ', '+')");
 $sql = mysql_query("UPDATE myMembers SET postcode = REPLACE(postcode, ' ', '+')");
 $sql = mysql_query("UPDATE myMembers SET phone = REPLACE(phone, ' ', '+')");
 $sql_doublecheck = mysql_query("SELECT * FROM myMembers WHERE id='$id' AND password='$hashpass' AND email_activated='1'"); 
 $doublecheck = mysql_num_rows($sql_doublecheck); 
于 2012-10-01T06:29:20.983 に答える
1

いくつかの問題

Bart Friederichsが指摘しているように、閉じ括弧がありません。

ほとんどのUPDATEステートメントは、すべてのデータベースエントリを更新します(WHEREステートメントのないクエリ)

更新するフィールドごとに1つのクエリを作成します...

UPDATE myMembers SET 
   email_activated='1',
   firstname = REPLACE(firstname, ' ', '+'),
   lastname = REPLACE(lastname, ' ', '+'),
   housenumber = REPLACE(housenumber, ' ', '+')
   --etc
WHERE 
   id='$id' AND password='$hashpass'
于 2012-10-01T06:32:01.433 に答える