php
  • mysql
  • 2012-11-14 53 views 1 likes 
    1

    我想让我的表单以this video的方式工作。 (如果你只是移动到最后3-4分钟,你会看到他的最终代码。)mysql/php更新查询参数导致它失败

    $UpdateQuery = "UPDATE aznet_data_spare_inventory SET ID='$_POST[id]', Shelf='$_POST[shelf]', Device Type='$_POST[device type]' WHERE ID='$_POST[hidden]'"; 
    

    如果我拿出我的更新查询的设备类型部分,该ID和货架更新将正常工作,但是当我试图让设备类型工作只是打破。我想我只是想知道是否有针对空间的规则或沿着这些方向的规则。

    +0

    你好。请告诉我们你在做什么以及出现什么问题以及任何错误消息。 –

    +3

    一眼就可以看到一个名为“设备类型”的列。不允许有空格。尝试device_type。 –

    +1

    该视频似乎没有提到它,但上述代码中存在严重的SQL注入漏洞。 – cmbuckley

    回答

    0

    首先是考虑使用库MySQLi或PDO来代替的MySQL,然后尝试调试代码

    $UpdateQuery = "UPDATE aznet_data_spare_inventory SET ID='$_POST[id]', Shelf='$_POST[shelf]', Device Type='$_POST[device type]' WHERE ID='$_POST[hidden]'"; 
    
    if(mysql_query($UpdateQuery,$con)){ 
    //query is ok 
    echo "item is updated"; 
    }else{ 
    die(mysql_error()); 
    } 
    
    +0

    这是在LAMP服务器上托管的,MySQLi还是PDO仍然是一个选项? – user1825126

    +0

    是的,它的扩展安装到PHP检查了这一点http://php.net/manual/en/ref.pdo-mysql.php –

    +0

    你们是伟大的,我会仰望sqli和pdo ...这只是为内部webtool。这将永远不会看到外部网络,所以我有时间学习适当的标准。再次谢谢你 !! – user1825126

    0

    注意,MySQL扩展已经过时,你应该考虑使用的mysqli或PDO。你不应该把用户输入数据,例如$_POST,直接进入您的查询。研究适当的方法来清理数据。
    我没有看到你在while循环中关闭<tr>标记。您也不会关闭您的任何<input>标签。

    是的,MySql列名不应该有任何空格。尝试将Device Type重命名为Device_Type。如果您检查mysql_query()是否返回false并输出mysql_error(),则可能会提供一些错误详细信息。

    相关问题