【发布时间】:2012-05-10 07:35:33
【问题描述】:
这是另一个奇怪的:
这是我的 php:
$query = "SELECT iVal, iOwn FROM item WHERE item = ".$_GET['Item'];
$result9 = mysql_query($query, $_SESSION['connect']);
$row9 = mysql_fetch_array($result9);
$query = "UPDATE chars SET chCred = chCred + ".$row9['iVal']." WHERE chNum = ".$row9['iOwn'];
mysql_query($query, $_SESSION['connect']) or die('Error 2:'.mysql_error());
当我运行它并在 $query 上执行 var_dump 时,我得到了这个:
UPDATE chars set chCred = chCred + 100000 WHERE chNum = 2
当我在 phpMyAdmin 中运行此查询时,记录会正确更新,但是当我运行代码时,记录没有更新,并且我没有收到错误消息。
【问题讨论】:
-
您的第一个 (
SELECT) 查询易受 SQL 注入攻击。您真的应该使用准备好的语句,您将变量作为参数传递到其中,这些参数不会针对 SQL 进行评估。如果您不知道我在说什么或如何解决它,请阅读 Bobby Tables 的故事。 -
如果你使用some error handling,你会得到什么?
-
另外,也使用
mysql_error()的链接标识符。mysql_error($_SESSION['connect']) -
会话是否以
session_start();开始? -
会话已启动,我尝试使用链接标识符,但仍然没有收到错误消息。我不了解 Bobby Tables 或错误处理。还是要消化一下。问题是,我在整个程序中都以相同的方式更新表,这是我第一次遇到这个问题。