PHP和Mysql错误“;您的SQL语法有错误;检查与您的MariaDB服务器版本相对应的手册;

PHP和Mysql错误“;您的SQL语法有错误;检查与您的MariaDB服务器版本相对应的手册;,php,mysql,Php,Mysql,我正试图为我的家庭自动化脚本编写一个小日志,但后来出现了以下错误: 您的SQL语法有错误;检查与您的MariaDB服务器版本对应的手册,以获取第2行“”附近要使用的正确语法 我的SQL是: INSERT INTO logsa (timeb, msg, actionb) VALUES ('12-05-2018 02:29:38pm', 'Succesfully send a trigger to https://maker.ifttt.com/trigger/test/w

我正试图为我的家庭自动化脚本编写一个小日志,但后来出现了以下错误:

您的SQL语法有错误;检查与您的MariaDB服务器版本对应的手册,以获取第2行“”附近要使用的正确语法

我的SQL是:

INSERT INTO
    logsa (timeb, msg, actionb)
VALUES 
    ('12-05-2018 02:29:38pm',
    'Succesfully send a trigger to https://maker.ifttt.com/trigger/test/with/key/xxxxxxxxxxxxxxxxxxxxxxxx With name test',
    'https://maker.ifttt.com/trigger/test/with/key/xxxxxxxxxxxxxxxxxxxxxxxx'
我的代码是:

    $logmsg = ("Succesfully send a trigger to " . $row["actiona"] . " With name " . $row["namea"]);

    date_default_timezone_set("Europe/Stockholm");

    $date = date("d-m-Y");
    $time = date("h:i:sa");
    $fulldate = ($date . " " . $time);

    $actiona = $row["actiona"];
    $sql = "INSERT INTO logsa (timeb, msg, actionb)
    VALUES ('$fulldate', '$logmsg', '$actiona'";

    if ($conn->query($sql) === TRUE) {
        echo "New record created successfully";
    } else {
        echo "Error: " . $sql . "<br>" . $conn->error;
    }
$logmsg=(“成功地向名为“$row[“namea”]”的“$row[“actiona”]”发送触发器);
日期默认时区设置(“欧洲/斯德哥尔摩”);
$date=日期(“d-m-Y”);
$time=日期(“h:i:sa”);
$fulldate=($date.“$time);
$actiona=$row[“actiona”];
$sql=“插入日志(timeb、msg、actionb)
值(“$fulldate”、“$logmsg”、“$actiona”;
if($conn->query($sql)==TRUE){
echo“新记录创建成功”;
}否则{
echo“Error:”.$sql.“
”$conn->Error; }
更改
timeb
数据值
$fulldate
以使用如下有效的日期时间格式

$fulldate = date('Y-m-d H:i:s');
$logmsg = ("Succesfully send a trigger to " . 
            $row["actiona"] . 
            " With name " . 
            $row["namea"]);

date_default_timezone_set("Europe/Stockholm");

$fulldate = date('Y-m-d H:i:s');
$actiona = $row["actiona"];

$sql = "INSERT INTO logsa (timeb, msg, actionb) VALUES (?,?,?)";
$stmt = $conn->prepare($sql);

$stmt->bind_param('sss', $fulldate, $logmsg, $actiona );
$result = $stmt->execute();
if ($result) {
    echo "New record created successfully";
} else {
    echo "Error: " . $sql . "<br>" . $conn->error;
}
MySQL和mariaDB希望DATETIME列以非常特定的格式存储,而您的格式无效

您还应该使用准备好的和参数化的查询来避免类似这样的SQL注入攻击

$fulldate = date('Y-m-d H:i:s');
$logmsg = ("Succesfully send a trigger to " . 
            $row["actiona"] . 
            " With name " . 
            $row["namea"]);

date_default_timezone_set("Europe/Stockholm");

$fulldate = date('Y-m-d H:i:s');
$actiona = $row["actiona"];

$sql = "INSERT INTO logsa (timeb, msg, actionb) VALUES (?,?,?)";
$stmt = $conn->prepare($sql);

$stmt->bind_param('sss', $fulldate, $logmsg, $actiona );
$result = $stmt->execute();
if ($result) {
    echo "New record created successfully";
} else {
    echo "Error: " . $sql . "<br>" . $conn->error;
}
$logmsg=(“成功向发送触发器”。
$row[“actiona”]。
“有名字”。
$row[“namea”]);
日期默认时区设置(“欧洲/斯德哥尔摩”);
$fulldate=日期('Y-m-d H:i:s');
$actiona=$row[“actiona”];
$sql=“插入logsa(timeb、msg、actionb)值(?,,?)”;
$stmt=$conn->prepare($sql);
$stmt->bind_param('sss',$fulldate,$logmsg,$actiona);
$result=$stmt->execute();
如果($结果){
echo“新记录创建成功”;
}否则{
echo“Error:”.$sql.“
”$conn->Error; }
您没有在查询中关闭括号(可能只是问题的复制粘贴错误)这是mariaDB中的一个有效日期时间吗?你的脚本是开放的,甚至可以用在
MYSQLI\uucode>或
PDO
API的谢谢你,詹姆斯,我只是没有注意到。括号没有正确关闭。没问题。谢谢大家的帮助。