【发布时间】:2013-06-05 19:21:12
【问题描述】:
好的!我有一个作为现场拍卖一部分的脚本,但我的代码并非全部正常工作,而且我已经走到了尽头!下面的代码是我尝试过的两种方法,但都没有成功:
<? if(isset($_GET['golive'])) { $id = $_POST['id']; $totalamount = $_POST['amount']; $ordernumber = $_POST['ordernumber']; mysql_connect("localhost","DBusername","DBpassword") or die(mysql_error()); mysql_select_db("DBname") or die(mysql_error(header('Location: live_auction.php?ordermun=error'))); mysql_query("INSERT INTO auction_bundle (`purchaser_id`,`amount`,`order_number`,`date`) VALUES (".$id.",".$totalamount.",".$ordernumber.",NOW()) UPDATE auction_products SET order_number=".$ordernumber." WHERE on_now=1; UPDATE auction_products SET sold=1 WHERE on_now=1; UPDATE auction_products SET on_now=3 WHERE on_now=1"); header('Location: live_auction.php?ordermun='.$ordernumber.''); } ?>
我也试过
<? if(isset($_GET['golive'])) { $id = $_POST['id']; $totalamount = $_POST['amount']; $ordernumber = $_POST['ordernumber']; mysql_connect("localhost","DBusername","DBpassword") or die(mysql_error()); mysql_select_db("DBname") or die(mysql_error(header('Location: live_auction.php?ordermun=error'))); mysql_query("INSERT INTO auction_bundle (`purchaser_id`,`amount`,`order_number`,`date`) VALUES (".$id.",".$totalamount.",".$ordernumber.",NOW()"); mysql_query("UPDATE auction_products SET order_number=".$ordernumber." WHERE on_now=1"); mysql_query("UPDATE auction_products SET sold=1 WHERE on_now=1"); mysql_query("UPDATE auction_products SET on_now=3 WHERE on_now=1"); header('Location: live_auction.php?ordermun='.$ordernumber.''); } ?>
第二个能够更改auction_products 表,但仍不能INSERT 和其他查询。我错过了什么。在点击 golive 按钮时,我需要所有这四个发生。
【问题讨论】:
-
您可能需要将查询中的值用单引号括起来。如果您在每个查询的末尾添加
or die(mysql_error()),您可以确切地看到如果查询不工作时数据库返回的内容 - 您目前假设一切正常。 -
您是否遇到任何错误。
-
你应该停止使用mysql_*函数并切换到mysqli或PDO(你也可以使用Doctrine之类的工具进行抽象)。此外,您永远不应将用户输入直接传递到查询文本中。您正在乞求 sql 注入攻击。如果你切换到 mysqli 或 PDO,你可以做参数化查询来帮助解决 sql 注入问题。
-
die(mysql_error(header('Location: live_auction.php?ordermun=error')))error_reporting(E_ALL); ini_set('display_errors', true);。 -
你们是对的,我对 sql 注入攻击持开放态度,所以我会努力解决这个问题。我的主要问题是第一个 INSERT 查询不起作用......永远!即使单独使用它也不起作用,我不知道为什么。
标签: php mysql insert sql-update multi-query