我的查询下面使用变量更新记录以识别数据库中的数据。我认为我的语法是正确的,尽管它可能是错的。此外,我绝对相信变量中有合法的值。为什么这个查询不起作用?
UPDATE `databasename`.`".$tablename."` SET `stock` = '".$f."' WHERE `myerspark`.`item_id` ='".$g."' LIMIT 1
谢谢你们。汤姆,是的,我已经尝试过,它运作正常。但令人沮丧的是因为我在脚本末尾回显了所有三个变量并且它们都显示了合法的值。
哈米什,我如何看待这些错误?
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 :(得分:1)
我有点困惑什么属于SQL,什么属于PHP,字符串来自哪里等等。你有什么可能没关系(如果前面和后面有双引号,我没看到。< / p>
我可能会这样写:
$sql = "UPDATE databasename.$tablename SET stock = '$f' WHERE myerspark.item_id = '$g' LIMIT 1"
$res = mysql_query($sql, $conn).....
你可以反击更多东西(和/或做mysql_real_escape)以获得“额外的安全性”,但这涵盖了这个想法。
什么是myerspark?我没看到它与查询的关系,这可能是你真正有意义的错误,是否存在语法错误。如果myerspark是tablename中的一个单独的表,那么你在这里遇到了一个问题,也许你应该有一个JOIN?