Php 奇怪的MySQL问题
所以我使用mysql查询浏览器设置了一个表,现在我正在尝试填充它。但无论我做什么,它都会说“成功创建了帐户”,但没有任何内容被添加到数据库中 我的代码如下: `Php 奇怪的MySQL问题,php,mysql,database,insert,Php,Mysql,Database,Insert,所以我使用mysql查询浏览器设置了一个表,现在我正在尝试填充它。但无论我做什么,它都会说“成功创建了帐户”,但没有任何内容被添加到数据库中 我的代码如下: ` if($connection) { $out= “我们正在处理您的请求,请稍候。”; mysql\u选择\u数据库( “账户”, $connection ); //生成帐号。 $AccountNumber=兰特(17000904870); //设置帐户值。 $GenuineUser=0; $VerifiedAdvertiser=0; $
if($connection)
{
$out=
“我们正在处理您的请求,请稍候。”;
mysql\u选择\u数据库(
“账户”,
$connection
);
//生成帐号。
$AccountNumber=兰特(17000904870);
//设置帐户值。
$GenuineUser=0;
$VerifiedAdvertiser=0;
$DateOfBirth=
$邮政[“bmoth”]。“/”$邮政[“bday”]。“/”$邮政[“byear”];
//MD5帐户ID。
$AccountID=md5($_POST[“AccountID”]);
//创建广告客户帐户。
mysql\u查询(
“插入帐户。广告商”(
“账号”,
“帐户ID”,
“名字”,
“姓”,
“出生日期”,
“电子邮件地址”,
“电话号码”,
"街道地址",,
"城市",,
“邮政编码”,
“国家”,
“国家”,
“真正用户”,
“已验证广告客户”)值(
“$AccountNumber。”,
“$_POST[“AccountID”]。”,
“$_POST[“FirstName”]。”,
“$\u POST[“LastName”]。”,
“$DateOfBirth.”,
“$\u POST[“EmailAddress”]。”,
“$_POST[“PhoneNumber”]。”,
“$”邮政[“街道地址”]。”,
“$”邮政[“城市”]。”,
“$”邮政[“ZipCode”]。”,
“$_POST[“State”]。”,
“$”邮政[“国家”]。”,
“$GenuineUser”。”,
“$VerifiedAdvertiser。”)
");
//设置广告表。
//假设已成功创建帐户。
$out=
“已创建广告客户帐户。”;
}
其他的
{
死('Oh,@#%#!:'.mysql#u error());
}
mysql_close($connection);
}
其他的
{
//否则,显示形式。
} ?>
`
有人能帮我解决一下吗?如果有任何帮助,我将不胜感激
多谢各位
更新
所以,多亏了你的建议,我已经设法弄清楚了接下来会发生什么:)结果,它不起作用,因为我在列名之间使用了空格(即帐户ID应该是AccountID)。所以我只是从表列和php代码中删除了空格
谢谢大家的帮助 您确实应该检查查询中的错误。甚至一些基本的东西,比如:
mysql_query($query) or die(mysql_error());
任何时候你做一个mysql函数,你都应该检查错误,或者有一个捕捉异常的方法(如果使用一个合适的接口,因为默认的mysql函数不会抛出异常)
它可能会在几点上搞砸
另外,作为提示,
sprintf
在编写查询时工作得非常出色。您的SQL查询中有一个错误。你得到“帐户创建”,因为你没有测试它 所以,多亏了你的建议,我已经设法弄清楚了接下来会发生什么:)结果,它不起作用,因为我在列名之间使用了空格(即帐户ID应该是AccountID)。所以我只是从表列和php代码中删除了空格
谢谢大家的帮助 将查询放在单独的变量中,打印/回显它,然后尝试从phpmyadmin或mysql控制台运行查询。另外,检查错误。在紧要关头,您可以执行mysql\u查询($query)或死亡(mysql\u error());然后将错误打印出来给您。还请注意,您发布的代码中存在大量漏洞。你们真的应该使用预先准备好的语句,或者至少对任何进入你们的查询中的不可信的输入…有更新的答案来解释什么是错误的谢谢!我在第2行得到了一个错误,即检查有效语法,因此我意识到可能是查询顶部的单引号(在值之前),所以我删除了单引号。然后,我得到了另一个错误,同样的事情:“您的SQL语法有一个错误;请检查与您的MySQL服务器版本对应的手册,以便在第2行“Number、Account ID、First Name、Last Name、Date”附近使用正确的语法”是否可能是因为名称之间的空格(即Account ID等)?问题已解决!这是列名之间的空格。这很奇怪,因为MySQL查询浏览器允许我使用空格,就像电子表格一样。哦,现在我知道了。现在它工作了,是时候让它安全了!!!:)谢谢你的帮助,Codeacula!:-)你是说,用“而不是”吗?:)谢谢你,麦克塞尔!显然,查询浏览器会为您更正它。并使用`而不是',但我也会确保检查`作为SQL清理的一部分,并根据需要进行处理,因为'mysql_escape_string()'没有意识到这一点。我已经解决了这个问题。谢谢你的帮助:)
mysql_query($query) or die(mysql_error());