3

我在 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))"';
4

8 回答 8

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()

于 2013-11-08T08:10:46.583 回答
3
try
{
  ...query
}catch(EXCEPTION $e)
{
  echo $e->getTraceAsString();
}

由于您使用的是 mysqli,因此您可以并且应该使用准备好的语句也可以看到mysqi 错误

于 2013-11-08T07:57:53.340 回答
1

它在 DATE 函数之前缺少一个逗号:

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

法布里斯

于 2013-11-08T08:06:33.167 回答
1

我不尝试,但我认为你在 VALUES 和 comat 之前的第一个 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))"'

我修复它

于 2013-11-08T07:59:54.970 回答
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())");
于 2013-11-08T08:02:24.167 回答
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 是的,引号是问题所在。现在应该没问题

于 2013-11-08T08:03:16.600 回答
1

我不确定 php 如何与 . 我认为它的= to & in 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(value,"'","''") 函数包装在值周围。

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

于 2013-11-08T08:03:40.357 回答
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))");
于 2013-11-08T08:09:34.063 回答