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;
}
}
}
您的查询有一些错误/可以改进
$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;
}
}
}