【问题标题】:PHP, MYSQL record not being updatedPHP、MYSQL 记录未更新
【发布时间】: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 或错误处理。还是要消化一下。问题是,我在整个程序中都以相同的方式更新表,这是我第一次遇到这个问题。

标签: php mysql


【解决方案1】:

您在网络服务器上的数据库连接是否需要您手动提交更新?如果您手动输入 SQL 时它正在工作,那么您的数据库连接没有设置自动提交,或者将查询传递到数据库时出现问题,您可以通过添加错误处理来检查,正如其他人所说。

【讨论】:

    猜你喜欢
    • 2019-06-15
    • 2011-12-09
    • 2020-07-19
    • 2016-09-12
    • 1970-01-01
    • 1970-01-01
    • 2011-12-10
    • 2012-11-22
    • 1970-01-01
    相关资源
    最近更新 更多