2016-11-18 67 views
2


我的問題是,只要我有與GuildName在哪裏它不起作用。它根本不會更新任何東西。
只要我有id = 1(有100個公會,所以設置id = 1不是一個選項),它確實有效。(PDO)UPDATE不更新與WHERE變量

$form   = $_POST; 
$boss   = $form['bossname']; 
$gname   = $form['guildname']; 
$screen   = $form['screenshot']; 
$log   = $form['logs']; 
$defeat   = $form['defeat']; 

if(isset($_POST['edit-guild'])){ 

    $Statement = $conn->prepare("UPDATE $boss SET `Bossname` =:boss, `GuildName` =:gname, `Screenshot` =:screen, `Link` =:link, `KillTime` =:defeattime, `KillYN` =:kill WHERE `GuildName`=:gname"); 
    // EXECUTING ARRAY FOR ^GUILD INFORMATION 
    $Statement->execute(array(
     "boss"   => $boss, 
     "gname"   => $gname, 
     "screen"  => $screen, 
     "link"   => $log, 
     "defeattime" => $defeat, 
     "kill"   => 'Yes' 
     )); 
} 

只要我有WHERE id = 1它確實工作。

$Statement = $conn->prepare("UPDATE $boss SET `Bossname` =:boss, `GuildName` =:gname, `Screenshot` =:screen, `Link` =:link, `KillTime` =:defeattime, `KillYN` =:kill WHERE id=1"); 
+1

另一場不能重複使用相同的參數名稱非常重要的。 –

+0

爲什麼用相同的值更新'gname'? –

+1

這是正確的'更新$老闆SET' $老闆作爲參數和tabelname? – JustOnUnderMillions

回答

1

如上所述,你不能重用相同的參數。嘗試給它一個不同的名稱:

if(isset($_POST['edit-guild'])){ 

    $Statement = $conn->prepare("UPDATE $boss SET `Bossname` =:boss, `GuildName` =:gname, `Screenshot` =:screen, `Link` =:link, `KillTime` =:defeattime, `KillYN` =:kill WHERE `GuildName`=:gname2"); 
    // EXECUTING ARRAY FOR ^GUILD INFORMATION 
    $Statement->execute(array(
     "boss"   => $boss, 
     "gname"   => $gname, 
     "gname2"   => $gname, 
     "screen"  => $screen, 
     "link"   => $log, 
     "defeattime" => $defeat, 
     "kill"   => 'Yes' 
     )); 
} 
+0

所以簡單地用不同的名字應該在這裏做這件事? – pbahmann1

+0

忽略任何其他錯誤,是的它應該工作。奇怪你的表名是以'$'爲前綴的。那是故意的嗎? – atoms

+0

好吧,工作就像一個魅力,謝謝你!會有更好的解決方案嗎?你似乎懷疑 – pbahmann1

0

從更新集中刪除gname字段。

$Statement = $conn->prepare("UPDATE $boss SET `Bossname` =:boss, `Screenshot` =:screen, `Link` =:link, `KillTime` =:defeattime, `KillYN` =:kill WHERE `GuildName`=:gname"); 

,如果你認爲gname處於更新SET,你可以嘗試其他不同的名稱或試圖改變where條件像id