Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP脚本未添加MySQL数据_Php_Mysql_Html - Fatal编程技术网

PHP脚本未添加MySQL数据

PHP脚本未添加MySQL数据,php,mysql,html,Php,Mysql,Html,我在数据库中插入了一个名为index的主键,为它们提供一个数值。我做错了什么,它不会添加它?它根本没有给我错误信息。谢谢你的帮助 表格: 你有两个问题。插入失败,因为变量没有像'$date'中那样用引号括起来: $query = "Insert INTO issuetrack (date, app, starttime, endtime, duration, sla, sysstate,issdesc, resdesc, assigned) VALUE

我在数据库中插入了一个名为index的主键,为它们提供一个数值。我做错了什么,它不会添加它?它根本没有给我错误信息。谢谢你的帮助

表格:


你有两个问题。插入失败,因为变量没有像
'$date'
中那样用引号括起来:

$query = "Insert INTO issuetrack (date, app, starttime, endtime, duration, sla,  sysstate,issdesc, resdesc, assigned) 
                    VALUES ('$date', '$app','$starttime','$endtime','$duration','$sla','$sysstate','$issdesc','$resdesc','$assigned')";
另外,请注意,查询中缺少
$sla
的条目。我把它加在上面了

第二个问题是,脚本很容易通过SQL注入进行篡改

至少,您必须使用
mysql\u real\u escape\u string()
对所有这些变量进行转义,即使它仅用于内部应用程序

$date = mysql_real_escape_string($_POST["orderdate"]);
$app = mysql_real_escape_string($_POST["application"]);
$starttime = mysql_real_escape_string($_POST["start"]);
...
...
$resdesc = mysql_real_escape_string($_POST["resdesc"]);
$assigned = mysql_real_escape_string($_POST["group"]);
这是不正确的

$query = "Insert INTO issuetrack (date, app, starttime, endtime, duration, sla, sysstate,issdesc, resdesc, assigned) 
                    VALUES ($date, $app,$starttime,$endtime,$duration,$sysstate,$issdesc,$resdesc,$assigned)";
这是正确的

$query = "Insert INTO issuetrack (date, app, starttime, endtime, duration, sysstate,issdesc, resdesc, assigned) 
                    VALUES ('$date', '$app', '$starttime','$endtime','$duration','$sysstate','$issdesc','$resdesc','$assigned')";
这里的问题是,您试图将
$sysstate
添加到
sla
中,将
$issdesc
添加到
sysstate
中,将
$resdesc
添加到
issdesc
中,并将
$assigned
保留为空


编辑:更新为包含引号

嘿,您对SQL注入非常开放。通过准备好的查询学习PDO。。。甚至不必费心去尝试让你现在拥有的东西发挥作用。你很快就会被黑客攻击。这是为了我工作团队内部的一些事情。我想我会同意的。@Intelwalk。。。你就是这么想的。等到有人在里面加上撇号,否则你的身体就会暴露在其他地方。对正确的做事方法一无所知是一回事。忽视如此严重的问题是完全不同的问题。如果您拒绝解决这样一个根本性的问题,那么您真的没有为web开发的业务。我希望我永远不必使用您制作的表单。别担心,我肯定会回去修复它。第三个问题:假设查询成功,并且没有任何错误处理,这将揭示由无引号数据插入导致的sql语法错误。此外,列列表中有10个字段,列列表中有9个字段values@MarcB错误处理在那里:
die(“无法查询数据库:
。”.mysql\u error())啊,对。。。我没有向下滚动足够远,这真是罪有应得。@jfkiley是的,看起来
sla
丢失了。
$date = mysql_real_escape_string($_POST["orderdate"]);
$app = mysql_real_escape_string($_POST["application"]);
$starttime = mysql_real_escape_string($_POST["start"]);
...
...
$resdesc = mysql_real_escape_string($_POST["resdesc"]);
$assigned = mysql_real_escape_string($_POST["group"]);
$query = "Insert INTO issuetrack (date, app, starttime, endtime, duration, sla, sysstate,issdesc, resdesc, assigned) 
                    VALUES ($date, $app,$starttime,$endtime,$duration,$sysstate,$issdesc,$resdesc,$assigned)";
$query = "Insert INTO issuetrack (date, app, starttime, endtime, duration, sysstate,issdesc, resdesc, assigned) 
                    VALUES ('$date', '$app', '$starttime','$endtime','$duration','$sysstate','$issdesc','$resdesc','$assigned')";