DB插入时的SQL查询错误

时间:2013-11-08 07:55:39

标签: php mysql sql

我在mysql查询时遇到语法错误。我已经尝试了很多方法来构造查询但仍然会收到错误:You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use。我不确定语法错误在哪里以及如何解决它。

查询数据库插入:

mysqli_query($con,"INSERT INTO users (first_name, last_name, email, access_date) VALUES ( '" . $_SESSION['admin']['fname'] . '" , "' .  $_SESSION['admin']['lname'] . '" , "' . $_SESSION['admin']['emailID']) . '" DATE(timestamp))"';

8 个答案:

答案 0 :(得分:3)

try
{
  ...query
}catch(EXCEPTION $e)
{
  echo $e->getTraceAsString();
}

由于你使用的是mysqli,你可以而且应该使用预备语句 另见mysqi error

答案 1 :(得分:3)

这将在今后和将来有所帮助:

$q = mysqli_prepare($con, 'INSERT INTO users (first_name, last_name, email, access_date) VALUES (?,?,?, CURDATE())');

mysqli_stmt_bind_param($q, 'sss', $fname, $lname, $eid);

$fname = $_SESSION['admin']['fname'];
$lname = $_SESSION['admin']['lname'];
$eid = $_SESSION['admin']['emailID'];

mysqli_stmt_execute($q);

DATE(timestamp) - timestamp是什么?也许你想这样做:DATE(TIMESTAMP())?使用CURDATE()

得到的结果相同

答案 2 :(得分:1)

我不试试,但我觉得你在VALUES的第一个cote有问题,而且在晚上有昏迷

mysqli_query($con,"INSERT INTO users (first_name, last_name, email, access_date) VALUES ( "' . $_SESSION['admin']['lname'] . '" , "' .  $_SESSION['admin']['lname'] . '" , "' . $_SESSION['admin']['emailID']) . '", DATE(timestamp))"'

我修好了

答案 3 :(得分:1)

尝试这个..也许你在值

之间加了错误的引号
mysqli_query($con,"INSERT INTO users (first_name, last_name, email, access_date) VALUES 
( '" . $_SESSION['admin']['fname'] . "' , '" . $_SESSION['admin']['lname'] . "' , '" . $_SESSION['admin']['emailID'] . "', NOW())");

答案 4 :(得分:1)

我不知道应该是什么时间戳,但这会有效:

mysqli_query($con,"INSERT INTO users (first_name, last_name, email, access_date) VALUES ( '" . $_SESSION['admin']['fname'] . "' , '" .  $_SESSION['admin']['lname'] . "' , '" . $_SESSION['admin']['emailID'] . "', DATE(timestamp))";

LE: @Kay Nelson是的,报价是问题所在。现在应该没问题

答案 5 :(得分:1)

我不确定php是如何工作的。我认为它=和&在Vb。但这就是查询的样子。

mysqli_query($con,"INSERT INTO users 
(first_name, last_name, email, access_date) 
VALUES( '" . $_SESSION['admin']['fname'] . '" ,
'" .  $_SESSION['admin']['lname'] . "' ,
'" . $_SESSION['admin']['emailID']) . "', '" . DATE(Now()) . "');

你错过了自己专栏中的日期。此外,您必须始终使用单引号包装值。 '" . value . "'

请记住,如果单个引用位于会话变量中,则可能需要在值周围包含REPLACE(值,“”,“,”)函数。

此外,TIMESTAMP是MySQL中的一个函数,应该与CURRENT__TIMESTAMP一起使用。更常见的是在日期字段上设置为默认值。将日期值传递给语法时,使用Now()获取当前日期。

答案 6 :(得分:1)

在DATE函数之前缺少逗号:

'" , "' . $_SESSION['admin']['emailID']) . '", DATE(timestamp))"'

和Fabrice

答案 7 :(得分:1)

你在最后一个DATE之前忘了一个逗号,而且还有一些乱七八糟的配额:

mysqli_query($con,"INSERT INTO users (first_name, last_name, email, access_date) VALUES ( '" . $_SESSION['admin']['fname'] . "' , '".  $_SESSION['admin']['lname'] ."' , '". $_SESSION['admin']['emailID']) ."', DATE(CURRENT_TIMESTAMP))");