2010-11-19 43 views
0

我在下面的查詢中使用變量來更新記錄以識別數據庫中的數據。我認爲我的語法是正確的,儘管它可能是錯誤的。另外,我絕對確定這些變量在其中具有合法的價值。爲什麼這個查詢不起作用?SQL查詢不讀取變量

UPDATE `databasename`.`".$tablename."` SET `stock` = '".$f."' WHERE `myerspark`.`item_id` ='".$g."' LIMIT 1 

謝謝你們。湯姆,是的,我已經嘗試過,它工作正常。但令人沮喪的是,我在腳本末尾回顯了所有三個變量,並且它們都顯示了合法的值。

Hamish,我如何查看這些錯誤?

Jon_Darkstar,這些變量是在前面的代碼行中分配的。這裏是我的整個代碼塊:

//variables $f, $g, and $tablename assigned from POST variables in previous lines 
mysql_select_db($database_Yoforia, $Yoforia); 
mysql_query("UPDATE `yoforiainventory`.`".$tablename."` SET `stock` = '".$f."' WHERE `".$tablename."`.`item_id` ='".$g."' LIMIT 1 "); 
mysql_close($Yoforia); 

echo ($f); 
echo ($tablename); 
echo ($g); 

再次,當我回應這些變量,他們都出來了很好的價值。

+0

你得到什麼錯誤?您是否嘗試過對PHP變量值進行硬編碼以查看其執行正常? – Tom 2010-11-19 00:45:59

+0

看起來很好。你從MySQL獲得什麼錯誤?他們通常很具描述性。 – Hamish 2010-11-19 00:46:26

+0

如果您將該查詢分配給變量,該行代碼後該變量的值是多少?另一件事我會做的是嘗試變量內的字符串(變量解析)。 – Mario 2010-11-19 01:06:47

回答

1

我有點困惑什麼屬於SQL,什麼屬於PHP,從哪裏來的字符串,等等。你有什麼可能是好的(如果有一個雙引號前端和結束,我沒有看到。

我可能會寫這樣的:

$sql = "UPDATE databasename.$tablename SET stock = '$f' WHERE myerspark.item_id = '$g' LIMIT 1" 
$res = mysql_query($sql, $conn)..... 

可以BACKTICK更多的東西(和/或做mysql_real_escape)的「額外的安全;但是,其覆蓋想法

是什麼。 myerspark?我沒有看到它與查詢有什麼關係,那可能是你真正的意思完全錯誤,是否存在語法錯誤。如果myerspark是tablename中的一個單獨表格,那麼你在這裏有一個問題,或許你應該加入一個JOIN?