所以,我假设它与我试图插入数据库的其中一个变量中的内容有关。但看了之后(print_r($ var);),它们看起来很好。
我不知道为什么我会因为地狱错误而变得模糊:
您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以便在第5行的''附近使用正确的语法
这是从第0行到没有更多php / mysql内容的代码:
$o = $_REQUEST["order"]; // this is line 5!!!!!!!!!!!!!!!!!!!!!
$a=$_REQUEST["amount"];
$f=$_REQUEST["freight"];
$connection =
mysql_connect(".com","2345687654","jljljkl1") or die(
mysql_error());
if($connection)
{
mysql_select_db("dba") or die(mysql_error());
mysql_query("INSERT INTO mysql_9269_dba.o
(amount, freight, sessionid)
VALUES
('".$a."', '".$f."', '".$o."'") or die(mysql_error());
// get their email..
$result = mysql_query("SELECT email
FROM cart
WHERE sessionid = '$o'") or die(mysql_error());
while($row = mysql_fetch_array($result)){
$email = $row["email"];
}
我不知道该怎么做。语法看起来很正常,我已经检查了插入到db中的所有变量的值,它们很好。任何帮助都表示赞赏
答案 0 :(得分:3)
假设缺少引用只是你从中获取真实凭据的红色鲱鱼,请记住MySQL错误将在MySQL语句的第5行,而不是PHP。鉴于此,您在MySQL语句的末尾错过了一个结束括号,即第5行。
应该是:
VALUES
('".$a."', '".$f."', '".$o."')") or die(mysql_error());
请注意额外的backet以关闭VALUES列表。
另外请记住,如果$ a $ f或$ o包含单引号或任何其他令人讨厌的内容,则此声明可能会死亡。您可能希望在此时查找有关防止“SQL注入”攻击的建议。
答案 1 :(得分:2)
我建议改为使用sprintf:
$query = sprintf("INSERT INTO mysql_9269_dba.o
(amount, freight, sessionid)
VALUES
('%s', '%s', '%s')",
mysql_real_escape_string($_REQUEST["amount"]),
mysql_real_escape_string($_REQUEST["freight"]),
mysql_real_escape_string($_REQUEST["order"]));
mysql_query($query) or die(mysql_error());
它将变量处理与查询构建分开,从而更容易查看语法错误。
答案 2 :(得分:0)
除了MySQL错误之外,你还错过了......上的引号。
mysql_connect(".com","2345687654,"jljljkl1") or die(
...线。 : - )
即:应该是:
mysql_connect(".com", "2345687654", "jljljkl1") or die(
答案 3 :(得分:0)
您在SQL语句中缺少右括号:
mysql_query("INSERT INTO mysql_9269_dba.o
(amount, freight, sessionid)
VALUES
('".$a."', '".$f."', '".$o."')") or die(mysql_error());
我在$ o之后直接添加了它。“''