我在本地计算机上创建了一个表单,数据库表等,但是没有插入数据。如果我运行打印sql查询并将其粘贴到PHP myadmin然后它插入值。任何人都可以指导我在不将值插入数据库时确定问题吗?以下是我的代码:
不要查看POST的值。他们很好。问题必须在我认为的PHP代码中。
$hlr2RegQty=$_POST['txtHLR2Reg'];
$hlr2MicroQty=$_POST['txtHLR2Micro'];
$hlr2NanoQty=$_POST['txtHLR2Nano'];
$hlr3RegQty=$_POST['txtHLR3Reg'];
$hlr3MicroQty=$_POST['txtHLR3Micro'];
$hlr3NanoQty=$_POST['txtHLR3Nano'];
$count= $hlr1RegQty+$hlr2RegQty+$hlr3RegQty+$hlr1MicroQty+$hlr2MicroQty+$hlr3MicroQty+$hlr1NanoQty+$hlr2NanoQty+$hlr3NanoQty;
$conn=mysql_connect('localhost','root','');
mysql_select_db('prime_comm', $conn);
$query="INSERT INTO `prime_comm`.`newsim`(`Invoice No`, `HLR-1`, `HLR-2`, `HLR-3`, `HLR-4`, `MICRO-1`, `MICRO-2`, `MICRO-3`, `NANO-1`, `NANO-2`, `NANO-3`, `Total Count`, `Amount`, `VAT`)
VALUES( $invoiceNo, $hlr1RegQty,$hlr2RegQty,$hlr3RegQty,0,$hlr1MicroQty,$hlr2MicroQty,$hlr3MicroQty,$hlr1NanoQty,$hlr2NanoQty,$hlr3NanoQty,$count, 0,0)";
$flag = mysql_query($query);
?>
答案 0 :(得分:1)
首先,您很容易受到SQL注入攻击。这是一个严重的安全漏洞。
其次,您需要将值放在'
中就像那样($ value必须首先使用mysql_real_escape_string或类似方法进行清理):
'$value'
答案 1 :(得分:1)
还要尝试查看您现在忽略的错误消息。
$flag = mysql_query($query) or die(mysql_errno() . ' ' . mysql_error());
这将让您更深入地了解查询的错误。还要尝试清理输入,因为人们只能在数据库中执行SQL注入。
答案 2 :(得分:1)
尝试在变量周围加上单引号;
$query="INSERT INTO `prime_comm`.`newsim`(`Invoice No`, `HLR-1`, `HLR-2`, `HLR-3`, `HLR-4`, `MICRO-1`, `MICRO-2`, `MICRO-3`, `NANO-1`, `NANO-2`, `NANO-3`, `Total Count`, `Amount`, `VAT`)
VALUES( '$invoiceNo', '$hlr1RegQty', '$hlr2RegQty', '$hlr3RegQty', 0, '$hlr1MicroQty', '$hlr2MicroQty', '$hlr3MicroQty', '$hlr1NanoQty', '$hlr2NanoQty', '$hlr3NanoQty', '$count', 0,0)";
此外,永远不要假设帖子数据是你期望的那样,或者干净/安全,因为这对sql注入是开放的。我还建议在mysql_ *函数上使用mysqli_ *函数,这些函数在较新版本的PHP中已弃用。希望这会有所帮助:)
答案 3 :(得分:1)
您最好先检查一下您的连接
$check = mysql_connect('localhost', '', '');
if (!$check) {
die('Could not connect: ' . mysql_error());
}
如果您没有收到该错误消息,请尝试var_dump()您要插入的所有数据,以查看它是否为空。
答案 4 :(得分:1)
试试这样:
mysql_query("INSERT INTO tablename (row-name-1, row-name-2)
values({$variable1}, {$variable2})");
您应该使用mysqli_query,否则您可以使用msql注入!