2014-12-28 28 views
0

我一直在研究brett m的「缺失手冊」。它過時了。我一直在更換mysql的func。那不是問題。我運行一個if語句來匹配使用preg match的sql命令。在之前,如果我將var設置爲true。如果preg匹配返回一個匹配,那麼var將被更改爲false。如果不運行。腳本執行到mysqli_fetch。請幫忙。如果preg_match不會將var更改爲false

$return_rows=true; 
If(preg_match("/^\s*(CREATE|INSERT|UPDATE|DELETE|DROP)/i", $query_text)) 
{ 
    $return_rows=false; 
} 
If($return_rows) 
{ 
    While($row=mysqli_fetch_row($result)){ echo $row[0]; } 
} 
else{ echo "query processed"; } 
mysqli_close($u); 

回答

-1

而不是使用if只更新您的案例之一$return_rows,正則表達式匹配結果直接分配的:

$return_rows = !preg_match("/^\s*(CREATE|INSERT|UPDATE|DELETE|DROP)/i", $query_text); 

這裏的!是一個否定。您可能想改爲使用更合適的變量名稱。

然後用你的if檢查讀取行,或打印一個消息還有:

if ($return_rows) { 
    // fetch rows 
} 
else { 
    // no fetching 
} 

還要考慮使用替代的mysqli PDO。通過參數綁定來避免迂迴。

+0

分配回行仍然預浸比賽繼續執行以抓取行。我不能去選擇陳述。這個腳本是一個練習。我必須弄清楚比賽。我runnig wamp sever/win7x64。這可能是一個錯誤? –

0

只是覆蓋了SELECT查詢。導致SELECT是從數據庫請求數據的主要查詢。現在

if(strtolower(substr(trim($query_str)) , 0, 6) == "select"){ 
    // SELECT query is being requested 
    while($row=mysqli_fetch_row($result)){ echo $row[0]; } 

else{ echo "query processed"; } 

mysqli_close($u); 

,你可以繼續你的工作沒有任何問題

相關問題