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