2013-07-06 46 views
-2

好吧,所以我想嘗試使用一個變量我設置在側Pdo更新我回顯所有的變量,在Pdo更新和所有設置,但更新似乎並沒有工作.. .. 我想我只是缺少單/雙引號pdo更新與動態變量

$myName = mysql_real_escape_string($_POST['myName']); 
$mydropdown = mysql_real_escape_string($_POST['mydropdown']); 





    if ($mydropdown == '1') {$tablename = "poke1";} 
if ($mydropdown == '2') {$tablename = "poke2";} 
if ($mydropdown == '3') {$tablename = "poke3";} 
if ($mydropdown == '4') {$tablename = "poke4";} 
if ($mydropdown == '5') {$tablename = "poke5";} 
if ($mydropdown == '6') {$tablename = "poke6";} 


echo $tablename; 


$sqll = "UPDATE users SET '$tablename'=? WHERE username=?"; 
    $q = $db->prepare($sqll); 
    $q->execute(array($myName,$_SESSION['username'])); 

我也有呼應出表名和MYNAME都是vaild並設置爲正確的事情

+0

爲什麼你'mysql_real_escape_string()'混有PDO準備語句? – MrCode

回答

0

使用反引號`而不是單引號:

$sqll = "UPDATE users SET `$tablename`=? WHERE username=?"; 

另外,你確定它的SET $tablename$tablename是否包含列名?

+0

謝謝你,如果我需要它,那麼這個頁面就不好用了。謝謝 – user2442903

-1

一點點的優化代碼

$myName = mysql_real_escape_string($_POST[`myName`]); 

$tablename = null; 

for($i = 1; $i < 7; $i++){ 

    if($_POST[`mydropdown`] == $i) $tablename = `poke`.$i; 
} 

if(!is_null($tablename)){ 

    echo $tablename; 

    $q = $db->prepare("UPDATE users SET `$tablename`=:tablename WHERE username=:username"); 
    $q->bindParam(`:tablename`, $myName); 
    $q->bindParam(`:username`, $username); 
    $q->execute(); 
}