插入记录PHP/PDO抛出错误
我试图构建一个简单的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'的正确语法插入记录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
首先,用连字符表示表名;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通常是 用于表名和列名的单词分隔符。您还应该将它们全部保留为小写。