SQL 语法错误'' 近行超出我的文件长度
SQL syntax error '' near line way outside my file length
我有这段代码可以将 3 个输入字段的 id 号和 2 个日期(2 个选择器,1 个文本字段)的数据发送到我的数据库。所有 3 列都是 VARCHAR。我正在使用方法 POST.
的表单
我收到这个错误:
You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '' at line 336
我的任何文件中都没有 336 行。
这是我文件中的 PHP 和 SQL 代码。我已经研究了很长时间了,但似乎无法找到此语法错误所在的位置。有什么想法吗?
<?php
//Fetches the id of the konsert selected.
$id = $_GET['id'];
//Create DB object
$db = new Database();
//Create query to fetch personel
$query = "SELECT * FROM funktionar";
//Run above query
$personel = $db->select($query);
//Fetch all from konsert matching the id
$query = "SELECT * FROM konsert WHERE konsertID=".$id;
//Run above query
$konsert = $db->select($query);
if(isset($_POST['submit'])) {
//Assign variables
$namn = mysqli_real_escape_string($db->link, $_POST['personalID']);
$tidStart = mysqli_real_escape_string($db->link, $_POST['tidStart']);
$tidSlut = mysqli_real_escape_string($db->link, $_POST['tidSlut']);
//Simple validation
if($namn == '' || $tidStart == '' || $tidSlut == ''){
//Set error if any field is left empty
$error = 'Vänligen fyll i alla fält.';
} else {
$query = "INSERT INTO sakerhet
(personalID, tidStart, tidSlut)
VALUES ('$namn', '$tidStart', '$tidSlut')";
$insert_row = $db->insert($query);
}
}
?>
编辑:
已添加插入功能:
public function insert($query) {
$insert_row = $this->link->query($query) or die($this->link->error.__LINE__);
//Validate insert
if($insert_row) {
header("Location: index.php?msg=".urlencode('Record Added'));
exit();
} else {
die('Error : ('.$this->link->errno .') '.$this->link->error);
}
}
最终可行的解决方案。此 SQL 错误发生的原因是:
- 缺少 table 列。虽然错误太模糊,无法直接给出答案,但我将所有输入数据放入简单变量而不是 á "$selected = $_POST['name']" 并回显变量 á "echo $konsert;" 等,以检查所以数据是从它的表单中正确获取的。像我一样注释掉查询。
- 可能错误地使用了 mysqli_real_escape_string 或“->link->”?我不参加这个项目的会议,因为它不是必需的,也不会去 public 所以删除它对我来说没问题。
结论
由于上述原因,查询本身执行时出现问题,这并不是一个语法错误。语法正确。
免责声明
此代码不是 100% 安全的,也不是 100% 完成的。输入字段未经过清理,正如@EagleRainbow 向我指出的那样,使用“$id = $_GET['id'];”是不安全的。
代码
<?php
//Fetches the id of the konsert selected.
$id = $_GET['id'];
//Create DB object
$db = new Database();
//Create query to fetch personel
$query = "SELECT * FROM funktionar";
//Run above query
$personel = $db->select($query);
//Select all from table sakerhet
$query = "SELECT * FROM sakerhet";
//Run above query
$safety = $db->select($query);
//Fetch all from konsert matching the id
$query = "SELECT * FROM konsert WHERE konsertID=".$id;
//Run above query
$konsert = $db->select($query);
<?php
if(isset($_POST['submit'])) {
//Assign variables
$selected = $_POST['safetyName'];
$tidStart = $_POST['tidStart'];
$tidSlut = $_POST['tidSlut'];
$konsert = $id;
//Simple validation
if($selected == '' || $tidStart == '' || $tidSlut == ''){
//Set error if any field is left empty
$error = "Vänligen fyll i alla fält.";
} else {
$query = "INSERT INTO sakerhet (personalID, tidStart, tidSlut, konsertID) VALUES ('$selected', '$tidStart', '$tidSlut', '$konsert')";
$insert_row = $db->insert($query);
}
}
?>
来自数据库文件的代码
public function insert($query) {
$insert_row = $this->link->query($query) or die($this->link->error.__LINE__);
//Validate insert
if($insert_row) {
header("Location: index.php?msg=".urlencode('Record Added'));
exit();
} else {
die('Error : ('.$this->link->errno .') '.$this->link->error);
}
}
感谢您的帮助。
我有这段代码可以将 3 个输入字段的 id 号和 2 个日期(2 个选择器,1 个文本字段)的数据发送到我的数据库。所有 3 列都是 VARCHAR。我正在使用方法 POST.
的表单我收到这个错误:
You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '' at line 336
我的任何文件中都没有 336 行。
这是我文件中的 PHP 和 SQL 代码。我已经研究了很长时间了,但似乎无法找到此语法错误所在的位置。有什么想法吗?
<?php
//Fetches the id of the konsert selected.
$id = $_GET['id'];
//Create DB object
$db = new Database();
//Create query to fetch personel
$query = "SELECT * FROM funktionar";
//Run above query
$personel = $db->select($query);
//Fetch all from konsert matching the id
$query = "SELECT * FROM konsert WHERE konsertID=".$id;
//Run above query
$konsert = $db->select($query);
if(isset($_POST['submit'])) {
//Assign variables
$namn = mysqli_real_escape_string($db->link, $_POST['personalID']);
$tidStart = mysqli_real_escape_string($db->link, $_POST['tidStart']);
$tidSlut = mysqli_real_escape_string($db->link, $_POST['tidSlut']);
//Simple validation
if($namn == '' || $tidStart == '' || $tidSlut == ''){
//Set error if any field is left empty
$error = 'Vänligen fyll i alla fält.';
} else {
$query = "INSERT INTO sakerhet
(personalID, tidStart, tidSlut)
VALUES ('$namn', '$tidStart', '$tidSlut')";
$insert_row = $db->insert($query);
}
}
?>
编辑: 已添加插入功能:
public function insert($query) {
$insert_row = $this->link->query($query) or die($this->link->error.__LINE__);
//Validate insert
if($insert_row) {
header("Location: index.php?msg=".urlencode('Record Added'));
exit();
} else {
die('Error : ('.$this->link->errno .') '.$this->link->error);
}
}
最终可行的解决方案。此 SQL 错误发生的原因是:
- 缺少 table 列。虽然错误太模糊,无法直接给出答案,但我将所有输入数据放入简单变量而不是 á "$selected = $_POST['name']" 并回显变量 á "echo $konsert;" 等,以检查所以数据是从它的表单中正确获取的。像我一样注释掉查询。
- 可能错误地使用了 mysqli_real_escape_string 或“->link->”?我不参加这个项目的会议,因为它不是必需的,也不会去 public 所以删除它对我来说没问题。
结论 由于上述原因,查询本身执行时出现问题,这并不是一个语法错误。语法正确。
免责声明 此代码不是 100% 安全的,也不是 100% 完成的。输入字段未经过清理,正如@EagleRainbow 向我指出的那样,使用“$id = $_GET['id'];”是不安全的。
代码
<?php
//Fetches the id of the konsert selected.
$id = $_GET['id'];
//Create DB object
$db = new Database();
//Create query to fetch personel
$query = "SELECT * FROM funktionar";
//Run above query
$personel = $db->select($query);
//Select all from table sakerhet
$query = "SELECT * FROM sakerhet";
//Run above query
$safety = $db->select($query);
//Fetch all from konsert matching the id
$query = "SELECT * FROM konsert WHERE konsertID=".$id;
//Run above query
$konsert = $db->select($query);
<?php
if(isset($_POST['submit'])) {
//Assign variables
$selected = $_POST['safetyName'];
$tidStart = $_POST['tidStart'];
$tidSlut = $_POST['tidSlut'];
$konsert = $id;
//Simple validation
if($selected == '' || $tidStart == '' || $tidSlut == ''){
//Set error if any field is left empty
$error = "Vänligen fyll i alla fält.";
} else {
$query = "INSERT INTO sakerhet (personalID, tidStart, tidSlut, konsertID) VALUES ('$selected', '$tidStart', '$tidSlut', '$konsert')";
$insert_row = $db->insert($query);
}
}
?>
来自数据库文件的代码
public function insert($query) {
$insert_row = $this->link->query($query) or die($this->link->error.__LINE__);
//Validate insert
if($insert_row) {
header("Location: index.php?msg=".urlencode('Record Added'));
exit();
} else {
die('Error : ('.$this->link->errno .') '.$this->link->error);
}
}
感谢您的帮助。