2015-08-29 154 views
-2

這是代碼變量問題

if($_POST['submit']) { 

$rid = $_GET['rid']; 
$award = $_GET['award']; 
$award_id = $_GET['award_id']; 
$member_id = $_GET['member_id']; 

$result = $mysqli->query("UPDATE ".$dbprefix."clanawards_requests SET maa_status = '3' WHERE maa_request_id = '$rid'"); 
$result = $mysqli->query("UPDATE ".$dbprefix."clanawards_members SET '".$award."' = '1' WHERE maa_member_id = '$member_id'"); 

的問題是在這條線

$result = $mysqli->query("UPDATE ".$dbprefix."clanawards_members SET '".$award."' = '1' WHERE maa_member_id = '$member_id'"); 

要精確SET '".$award."' = '1'

'".$award."'是列名,變量和一切其他的作品,但這部分代碼沒有更新。

我需要知道的是如何讓變量在這個mysqli字符串中工作。

+1

怎麼樣,如果你說的$ SQL =「這裏創建你更新串」 ......然後呼應它,看看它看起來多麼可怕 – Drew

+0

^^^^所以更容易調試這方式 –

+0

和那個專欄的名字是什麼; '列1'? '第1列'? '列'xxx''? '羅馬神廟廟柱'? –

回答

3

"column name would be Testing Award"

你有蜱

SET `$award` = '1' 

而不是引號,因爲它包含一個空格來包裝列名。

MySQL應該引發了一個語法錯誤:(請參考下面的錯誤檢查方法)。

要麼,或重命名列包含下劃線。

I.e .: Testing_Award

不要使用連字符,因爲MySQL會將Testing-Award解釋爲Testing minus獎,導致語法錯誤,除非使用反引號。

你也應該用事先準備好的聲明:

你敞開的SQL注入。


錯誤檢查方法:

例子:

$res = $mysqli->query($result); 

if ($mysqli->error) { 
    try {  
     throw new Exception("MySQL error $mysqli->error <br> Query:<br> $query", $mysqli->errno);  
    } catch(Exception $e) { 
     echo "Error No: ".$e->getCode(). " - ". $e->getMessage() . "<br >"; 
     echo nl2br($e->getTraceAsString()); 
    } 
} 

或:

$result = mysqli_query($mysqli, $result); 

if (!$result) 
{ 
    throw new Exception(mysqli_error($mysqli)); 
} 

else{ echo "Success."; } 

理想的情況下,使用mysqli_affected_rows()會給你一個更好的結果,如果查詢真正成功。

+0

謝謝你的工作 –

+0

@NukerViper不客氣。 –

+0

我會使用準備好的陳述,但我的編碼技能不是那麼高 –