带有变量的查询的SQL错误语法

时间:2017-07-26 22:36:39

标签: php mysql

我正在尝试创建一个如下所示的导入脚本:

rsync -vrtpi --size-only --dry-run /media/myname/Dropbox/ /home/myname/Dropbox > foo.txt

但似乎我有语法错误,不知道在哪里。也许我累了。

我找到了类似的帖子但没有效果。

3 个答案:

答案 0 :(得分:3)

您的查询有一些错误/可以改进。

  1. status和date是sql中的关键字。为了使它们成为未来的证明(如果它们被保留,或者添加了新的),或者你想要总是安全地使用你想要的任何列名而不担心它们是否会导致错误,最好将它们包装在反引号中``
  2. 您不应将列包裹在''
  3. 你没有用''在你的价值观中
  4. 包裹它们

    您的查询应如下所示:

    $sql2 = "INSERT INTO palace_files (id, module, item_id, name, status, date, modified) 
             VALUES (NULL, 5, '{$ids}', '{$files}',1 ,'{$date}' , '{$date}')";
    

答案 1 :(得分:1)

你的错误连接。看到你错过.运营商&引用"。在""内你可以使用php变量来解释它的值。

 $sql2  = "INSERT INTO palace_files ('id', 'module', 'item_id', 'name', 'status', 'date', 'modified') VALUES (NULL, 5, "'.$ids.'", "'.$files.'",1 ,"'.$date.'" , "'.$date.'")";

试试这个:

foreach ($app_files as $file) {
 if ($row["old_id_import"] == $file['idx']) {

    $ids = $row["id"];
    $files = $file['file'];
    $date = date('Y-m-d H:i:s');
    $sql2 = "INSERT INTO palace_files (id, module, item_id, name, status, date, modified) VALUES (NULL, 5, '$ids', '$files',1 ,'$date' , '$date')";
    if ($conn->query($sql2) === TRUE) {
        echo "New record imported successfully";
    } else {
        echo "Error: " . $sql2 . "<br>" . $conn->error;
    }
 }
}

答案 2 :(得分:0)

foreach ($app_files as $file) {
 if ($row["old_id_import"] === $file['idx']) {

    $ids = $row["id"];
    $files = $file['file'];
    $date = date('Y-m-d H:i:s');
    $sql2 = "INSERT INTO palace_files (module, item_id, name, status, date, modified) VALUES (5, '{$ids}', '{$files}',1 ,'{$date}' , '{$date}')";
    if ($conn->query($sql2) === TRUE) {
        echo "New record imported successfully";
    } else {
        echo "Error: " . $sql2 . "<br>" . $conn->error;
    }
 }
}

而不是插入ID,为什么不将ID设置为自动增量并允许它自己处理