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

Php 带变量查询的SQL错误语法,php,mysql,Php,Mysql,我正在尝试创建一个导入脚本,如下所示: 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' );

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

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;
                }
            }
        }
foreach($app\u文件为$file){
if($row[“old\u id\u import”]==$file['idx'])){
$ids=$row[“id”];
$files=$file['file'];
$date=日期('Y-m-d H:i:s');
$sql2=“在文件中插入('id'、'module'、'item_id'、'name'、'status'、'date'、'modified')值(NULL,5、“..ids.”、“..files.”、1、“..date.”、“..date.”、“..date.””;
if($conn->query($sql2)==TRUE){
echo“新记录导入成功”;
}否则{
echo“Error:”.$sql2.“
”$conn->Error; } } }
但似乎我有语法错误,不知道在哪里。也许我累了


我发现类似的线程,但没有一个有效。您的操作有误。在这里查看一些您遗漏的
运算符"e
”。在
中,您可以使用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;
    }
 }
}
foreach($app\u文件为$file){
if($row[“old\u id\u import”]==$file['idx'])){
$ids=$row[“id”];
$files=$file['file'];
$date=日期('Y-m-d H:i:s');
$sql2=“将值(NULL,5,'$ids','$files',1,'$date','$date')插入宫殿文件(id、模块、项目id、名称、状态、日期、修改)中”;
if($conn->query($sql2)==TRUE){
echo“新记录导入成功”;
}否则{
echo“Error:”.$sql2.“
”$conn->Error; } } }
您的查询有一些错误/可以改进

  • 状态和日期是sql中的关键字。为了使它们能够经得起未来的考验(以防它们被保留或添加新名称),或者您希望始终安全地使用任何您想要的列名,而不必担心它们是否会导致错误,最好将它们包装在反勾中``
  • 不应将列包装在“”中
  • 您的值中没有使用“”包装它们
  • 您的查询内容如下:

    $sql2 = "INSERT INTO palace_files (id, module, item_id, name, status, date, modified) 
             VALUES (NULL, 5, '{$ids}', '{$files}',1 ,'{$date}' , '{$date}')";
    
    foreach($app\u文件为$file){
    if($row[“old\u id\u import”]==$file['idx'])){
    $ids=$row[“id”];
    $files=$file['file'];
    $date=日期('Y-m-d H:i:s');
    $sql2=“将值(5,{$ids}'、{$files}',1,{$date}'、{$date}'、{$date}')插入palace_文件(模块、项目id、名称、状态、日期、修改)中”;
    if($conn->query($sql2)==TRUE){
    echo“新记录导入成功”;
    }否则{
    echo“Error:”.$sql2.“
    ”$conn->Error; } } }

    与其插入ID,为什么不将ID设置为自动递增,并允许它自行处理

    echo$sql2显示什么?输出sql命令以检查其是否正确。示例插入到palace_文件中(“ID”、“模块”、“项目ID”、“名称”、“状态”、“日期”、“修改的”)值(NULL,51357143099797075.830,112017-07-26 22:41:102017-07-26 22:41:10)反勾(
    `
    ),而不是引号(
    ')
    )对于表/列名…引号用于字符串文字学习如何使用带绑定变量的准备语句,并进入21世纪为什么我答案中的代码段没有显示为代码?为什么否决?我在数据库中使用日期、状态、名称作为实体名,这没有问题。所以这不是他为什么要这样做的原因Ror但这可能会发生,不这样做是不好的做法,所以我建议将它们包装起来,以防其他人看到这篇文章……2.和3.应该解决您的问题如果您在没有{}或..符号的情况下包装在“”中,php将看到它只是一个字符串@'$ids','$files',1',$date和'$date它必须在'{$ids}中“您不需要这样做。请看这个例子。但是我在我的答案中添加了它。这个答案完全不正确,需要修复。@Fred ii-谢谢我现在已经修复了
    ('id','module','item_id','name','status','date','modified'))
    这些
    不应该有引号。
    它们要么需要删除,要么使用与引号相似但不同的所谓记号
    `
    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;
        }
     }
    }