【问题标题】:Mysql query appears to be working but still get error?Mysql 查询似乎正在工作,但仍然出现错误?
【发布时间】:2011-12-30 20:46:32
【问题描述】:

我正在运行以下程序,它似乎正在从数组中提取数据,因为错误包含我查询过的所有数据,所以我不确定为什么我会收到错误:

<?php
$user = $_POST[cf_id];
$form = $_POST[uid];
$date = date("d-m-Y"); 
$query = mysql_query("UPDATE hqfjt_chronoforms_data_addupdatelead SET '".$form."' = '".$date."' WHERE cf_id = '".$user."' ")
or die(mysql_error());
?>

我得到的错误是:

您的 SQL 语法有错误;检查手册 对应于您的 MySQL 服务器版本,以便使用正确的语法 ''185cfb5654aacf3038e3f26491f227356b5d768f' = '30-12-2011' 附近 cf_id = '32'' 在第 1 行

如您所见,数据正在被拉入,所以不确定我在某处有语法错误吗?

【问题讨论】:

  • 请发布您的查询,以便我们检查错误。对不起英语
  • 您能否提供运行查询的代码片段,或者查询的构建位置?
  • 能发一下hqfjt_chronoforms_data_addupdatelead的表结构吗?
  • 嗨,查询来自 chronoform,它发布到我的数据库,然后在 onsubmit 代码中,我有上面的代码在发送表单时记录
  • 另外,您确实需要查看准备好的语句。这是一个非常危险的代码片段。如果您不相信我,请尝试弄清楚如果有人发布值“'; DROP TABLE hqfjt_chronoforms_data_addupdatelead;”会发生什么

标签: php mysql arrays where


【解决方案1】:

如果 `$form` 是一列,请不要使用引号 ('),而应使用重音符号 (`)。 (所以让它成为`$form`)

【讨论】:

  • 仅供参考:通常在编程情况下,它们被称为反引号而不是重音。
  • 是否也适用于 $user 因为它也是一个列,它等于列 cf_id
  • 不,$user 不是列,而是该特定行的列的值。然而,`cf_id` 一列。
【解决方案2】:

$10 表示您的字符串中有一个撇号并且没有费心将其转义,从而使您容易受到 SQL 注入攻击。

【讨论】:

    【解决方案3】:

    试试这个:mysql_real_escape_string

    <?php
    $user = mysql_real_escape_string($_POST[cf_id]);
    $form = mysql_real_escape_string($_POST[uid]);
    $date = mysql_real_escape_string(date("d-m-Y")); 
    $query = mysql_query("UPDATE hqfjt_chronoforms_data_addupdatelead SET '".$form."' = '".$date."' WHERE cf_id = '".$user."' ")
    or die(mysql_error());
    ?>
    

    【讨论】:

      【解决方案4】:

      这里的问题是您所说的 $form 被用作列名。由于您是从名为 UID 的 post 参数填充它,因此我假设这是不正确的。您可能想要的是更多类似的东西:

      "UPDATE hqfjt_chronoforms_data_addupdatelead SET `date` = '".$date."' WHERE cf_id = '".$user."' and `uid` = " . $form;
      

      我确定这并不准确,但使用 UID 作为列名没有任何意义。

      【讨论】:

        猜你喜欢
        • 2012-06-24
        • 2016-12-29
        • 2020-05-02
        • 2015-06-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-10-04
        • 1970-01-01
        相关资源
        最近更新 更多