2017-07-25 174 views
1

我有一個小問題,我試圖從昨天開始解決它。 當用戶註冊時,在註冊頁面中還有一個「贊助商」字段,即在該網站上邀請他的用戶名。 我爲每位經過驗證的推薦的贊助商提供一些獎金。當用戶確認電子郵件腳本進行驗證時,他將被激活,並且贊助商應該收到一些獎金。 這是有工作要做的腳本的一部分。SQL在一行中查詢一個值並將其更改爲另一行的值

if($status=="OK") 
{ 
//updating status if validation passes 
$rec1=mysql_query("select referedby from affiliateuser where email=$email"); 
$row2 = mysql_fetch_row($rec1); 
$ref=$row2[0]; 
$query4=mysql_query(" update affiliateuser set active = 1 where email = '$email'"); 
$query3=mysql_query(" update affiliateuser set tamount = tamount + 5 where username = '$ref'"); 
$query4=mysql_query(" update affiliateuser set tamount = 49 where username = '$username'"); 
echo "<center><p>Thank You For Signing Up With Us.<br/>You Are Now Verified Member. You May Now Login Into Website. </p></center>"; 
} 

所以,如果一切正常,將選擇該用戶贊助商的用戶名,$ QUERY3應該再更新贊助的行改變了他的平衡(tamount),但他的平衡不變。如果這件事有什麼問題,我會放一些代碼行來說錯誤,並說錯誤。 我第一次嘗試這樣的兩行,這很可能是我寫錯了。 我如何解決這個問題,它有任何其他方式。目前我不關心SQL注入等,只是想解決這個問題,謝謝。

+2

您使用的是史前'mysql_ *'庫,你的代碼是在SQL注入嚴重的風險 - 幫你一個忙,閱讀關於準備好的語句和PDO的教程 –

+0

那麼你可能不關心SQL注入,SQL注入問題也是爲什麼這個'where email = $ email'是無效的SQL。你也可以在2 – chris85

+0

是的,但他們可以知道我在用什麼?鏈接是不可注射的。 –

回答

0

我想你忘記了「和」的區別,

if($status=="OK") 
{ 
//updating status if validation passes 
$rec1=mysql_query("select referedby from affiliateuser where email='".$email."'"); 
$row2 = mysql_fetch_row($rec1); 
$ref=$row2[0]; 
$query4=mysql_query(" update affiliateuser set active = 1 where email = '".$email."'"); 
$query3=mysql_query(" update affiliateuser set tamount = tamount + 5 where username = '".$ref."'"); 
$query4=mysql_query(" update affiliateuser set tamount = 49 where username = '".$username."'"); 
echo "<center><p>Thank You For Signing Up With Us.<br/>You Are Now Verified Member. You May Now Login Into Website. </p></center>"; 
} 

試試這個

+0

完美,謝謝!我真的是初學者,我使用了很多來自一些網站,博客,stackovoerflow等的說明,而且很可能我使用了錯誤的一個:)再次感謝您。 –

+1

@LazarBiz作爲初學者,你不應該以'mysql_'開頭。它很快就會讓你失望。使用'pdo'或'mysqli'。 – chris85

+0

我不知道如何將代碼中的所有mysql轉換爲mysqli。我會嘗試尋找,但重要的是認爲它的工作原理。 –

相關問題