【问题标题】:MYSQL/PHP Syntax Error [closed]MYSQL/PHP 语法错误
【发布时间】:2013-03-13 19:37:17
【问题描述】:

这是我页面顶部的 php 代码:

if(!$_SESSION['username']){
  header("Location: ../error.php?id=1");
}

$teamgamertag = $_POST["gamertag"];
$teamgame = $_POST["game"];
$teamtype = $_POST["type"];
$teamname = $_POST["name"];
$teamconsole = $_POST["console"];

if(isset($_POST["submit"])){
  $sql2 = mysql_query("INSERT INTO teams (name, game, players, creator, console, leaders, type, score) VALUES ('$teamname', '$teamgame', '$teamgamertag', '$teamgamertag', '$teamconsole', '$teamgamertag', '$teamtype', '0'") or die(mysql_error());

  if($sql2){
    header("../results.php?id=1");
  }else{
    exit();
  }
}
?>

我不知道问题是什么以及在哪里解决它。提前感谢您的帮助。

【问题讨论】:

  • 这里没有明显的语法错误,除了缺少开头的<?php标签。很可能是您在undefined index: gamertag 或类似问题中的问题,因为您在尝试使用它们之前没有检查以确保它们已设置。
  • @NicholasPickering 它在 SQL 中缺少 )
  • 您的第二个标题格式不正确
  • 这个,是“不是一个真正的问题”的完美例子。
  • 另外,来自手册 header() HTTP/1.1 requires an absolute URI as argument to » Location: including the scheme, hostname and absolute path, - 即。 header("Location: http://$host.$uri");

标签: php mysql syntax


【解决方案1】:

您的 SQL 查询的结尾括号丢失:

'$teamgamertag', '$teamtype', '0'")

应该在这里:

'$teamgamertag', '$teamtype', '0')")

此外,您的 SQL 容易受到注入攻击。不要手动创建查询字符串。使用准备好的语句:PHP PDO prepared statements

【讨论】:

  • 其实我觉得应该有两个括号。 '0')") 第一个关闭 VALUES 块,第二个关闭对 mysql_query 的调用。
  • @NicholasPickering:谢谢。
  • 我打算稍后做准备好的语句,我只是想获得这个优先级设置。此外,当我进行更改时,加载页面时出现错误...“解析错误:语法错误,意外';'在 /home/u914842696/public_html/onlinegw/teams/create.php 第 17 行"
  • @user2203989 在答案中使用更新后的代码。
  • 感谢@NicholasPickering 和@Blender 的帮助!
【解决方案2】:

将您的代码替换为

<?php
if(!$_SESSION['username']){
  header("Location: ../error.php?id=1");
}

$teamgamertag = $_POST["gamertag"];
$teamgame = $_POST["game"];
$teamtype = $_POST["type"];
$teamname = $_POST["name"];
$teamconsole = $_POST["console"];

if(isset($_POST["submit"])){
  $sql2 = mysql_query("INSERT INTO teams (name, game, players, creator, console, leaders, type, score) VALUES ('$teamname', '$teamgame', '$teamgamertag', '$teamgamertag', '$teamconsole', '$teamgamertag', '$teamtype', '0')") or die(mysql_error());

  if($sql2){
    header('Location: ../results.php?id=1');
  }else{
    exit();
  }
}
?>

【讨论】:

  • 您在header('Location: ../results.php?id=1') 末尾缺少;
  • 谢谢。我没注意到@sean
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-20
  • 1970-01-01
  • 1970-01-01
  • 2013-10-14
相关资源
最近更新 更多