Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/9.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/PDO抛出错误_Php_Mysql_Pdo - Fatal编程技术网

插入记录PHP/PDO抛出错误

插入记录PHP/PDO抛出错误,php,mysql,pdo,Php,Mysql,Pdo,我试图构建一个简单的PHP记录插入,但我似乎无法让它工作,它一直说我的语法有错误 这不会出现在实时生产服务器上,这只是我的内部使用,所以注入/攻击不受关注 代码: 错误: 插入o18注册id、头衔、名字、姓氏、性别、地址、dob、eve电话、day电话、职业、电子邮件地址、听到的方式、结束、规则、伤害、问题、健身房风险、同意规则、右移、全名、签名值Mr、Liam、Gallagher、男性、5 Street、25/11/1990、0883821953、032714821953、设计师、,email

我试图构建一个简单的PHP记录插入,但我似乎无法让它工作,它一直说我的语法有错误

这不会出现在实时生产服务器上,这只是我的内部使用,所以注入/攻击不受关注

代码:

错误:

插入o18注册id、头衔、名字、姓氏、性别、地址、dob、eve电话、day电话、职业、电子邮件地址、听到的方式、结束、规则、伤害、问题、健身房风险、同意规则、右移、全名、签名值Mr、Liam、Gallagher、男性、5 Street、25/11/1990、0883821953、032714821953、设计师、,email@gmail.com谷歌告诉我,是的,是的,是的,是的,是的,是的,是的,利亚姆·加拉赫,测试 SQLSTATE[42000]:语法错误或访问冲突:1064您的SQL语法有错误;检查与您的MySQL服务器版本相对应的手册,以了解在第1行使用近'-reg id、title、first_name、姓氏、性别、addr、dob、eve_tel、day_tel、occup'的正确语法


首先,用连字符表示表名;MySQL表示你想在这里做数学

$sql = "INSERT INTO o18-reg
转化为o18减去reg

所以用扁虱把它包起来

$sql = "INSERT INTO `o18-reg` ...
或者将其重命名为下划线

然后你会面临另一个问题,价值观。你有一些字符串,所以你需要引用它们

并对其余的字符串执行相同的操作

然后您将面临SQL注入

使用事先准备好的陈述:

编辑:

我刚刚注意到,您有21列,但是使用了20个变量,而没有进行必要的调整以进行补偿。您可能会收到关于列不匹配的附加错误,其后果是:

致命错误:未捕获的异常“PDOException”带有消息。插入值列表与列列表不匹配:1136列计数与第1行的值计数不匹配

如果id是AI,则需要通过添加以下内容对查询进行轻微调整:

如果为它预留了一个变量,但它似乎不存在于您发布的代码中,那么添加它。但是,如果id列是AI,则使用上面的

洞察:

确保表单使用POST方法,并且所有输入都带有名称属性,并且没有输入错误

他们似乎是正确的人口,但这也是为未来的游客的问题。 添加到文件的顶部,这将有助于查找错误

<?php 
error_reporting(E_ALL);
ini_set('display_errors', 1);

// rest of your code

旁注:显示错误只能在暂存中进行,而不能在生产中进行。

首先,用连字符显示表名;MySQL表示你想在这里做数学

$sql = "INSERT INTO o18-reg
转化为o18减去reg

所以用扁虱把它包起来

$sql = "INSERT INTO `o18-reg` ...
或者将其重命名为下划线

然后你会面临另一个问题,价值观。你有一些字符串,所以你需要引用它们

并对其余的字符串执行相同的操作

然后您将面临SQL注入

使用事先准备好的陈述:

编辑:

我刚刚注意到,您有21列,但是使用了20个变量,而没有进行必要的调整以进行补偿。您可能会收到关于列不匹配的附加错误,其后果是:

致命错误:未捕获的异常“PDOException”带有消息。插入值列表与列列表不匹配:1136列计数与第1行的值计数不匹配

如果id是AI,则需要通过添加以下内容对查询进行轻微调整:

如果为它预留了一个变量,但它似乎不存在于您发布的代码中,那么添加它。但是,如果id列是AI,则使用上面的

洞察:

确保表单使用POST方法,并且所有输入都带有名称属性,并且没有输入错误

他们似乎是正确的人口,但这也是为未来的游客的问题。 添加到文件的顶部,这将有助于查找错误

<?php 
error_reporting(E_ALL);
ini_set('display_errors', 1);

// rest of your code

旁注:显示错误只能在暂存中进行,而不能在生产中进行。

您没有引用任何值,并且您完全可以接受,并且您的表名是非法的。它是o18减去reg,因为你没有引用它backticks@MarcB请注意,我的回答不是基于你的评论。我同时在打字,我对我的答案Liam做了一个编辑,关于列和值的数量。重新加载它以查看更改。您没有引用任何值,并且您完全开放,并且您的表名是非法的。它是o18减去reg,因为你没有引用它backticks@MarcB请注意,我的回答不是基于你的评论。我同时在打字,我对我的答案Liam做了一个编辑,关于列和值的数量。重新加载以查看更改。此外,下划线u通常是用于表名和列名的单词分隔符。此外,下划线u通常是 用于表名和列名的单词分隔符。您还应该将它们全部保留为小写。