2014-09-12 70 views
0

即時通訊嘗試記錄發生在我的網站上的搜索。當有人搜索我想先檢查的數據庫時,如果它之前已被搜索過。如果它沒有提交到數據庫,則將搜索次數增加1次。選擇插入,如果不存在添加或更新

即時獲取的問題是,您隨時可以搜索更新所有記錄的搜索項。我認爲,因爲我沒有設置ID。我怎麼能在第一個查詢中獲得搜索項的id,並在第二個查詢中將id作爲變量傳遞,因此它只更新與該id相關的searchterm?

$result = mysql_query("SELECT * FROM wss_search WHERE searchterm ='$trimmed' "); 

if(mysql_num_rows($result) > 0) { 
mysql_query("UPDATE wss_search SET count = count+1 WHERE searchterm = '$trimmed' "); 
} 
else 
{ 
mysql_query("INSERT INTO wss_search (id, searchterm, count) VALUES ('NULL', '$trimmed', '1') "); 
} 

任何幫助非常感謝。

即時通訊也知道我應該使用mysqli,但其餘的軟件尚未更新到mysqli呢。

+0

當你瀏覽你的代碼並更新它時,你可能想要將這些部分碰撞到'mysqli'。你可以並行運行它們。這看起來恐怖不安全。你確定**你的用戶參數是[妥善轉義](http://bobby-tables.com/php)? – tadman 2014-09-12 17:28:10

+0

除此之外,真的不安全...爲什麼不只是將第一個select選擇爲'SELECT id FROM wss_search' .. ..然後$ result等於該id ..然後將結果傳遞到第二個查詢中的WHERE WHERE id ='$ result [0]'和searchterm ='$ trimmed'' – 2014-09-12 17:36:24

+0

請閱讀:http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php和http ://stackoverflow.com/questions/12859942/why-shouldnt-i-use-mysql-functions-in-php – Pang 2014-09-13 09:42:17

回答

0

我已經使用下面的代碼工作。即時通訊新的PHP可以請你告訴我爲什麼它不安全,我需要做些什麼來使其安全?

$var = $_GET['q'] ; 
$trimmed = mysql_secure($var); 

$result = mysql_query("SELECT id FROM wss_search WHERE searchterm ='$trimmed' "); 

while($row = mysql_fetch_array($result)) { 

    $id = $row['id']; 
} 

if(mysql_num_rows($result) > 0) { 
mysql_query("UPDATE wss_search SET count = count+1 WHERE id = '$id' and searchterm = '$trimmed' "); 
} 
else 
{ 
mysql_query("INSERT INTO wss_search (id, searchterm, count) VALUES ('NULL', '$trimmed', '1') "); 
} 
相關問題