我使用准备好的声明将表1 中的数据插入表2 (表1的副本 )
唯一的区别是表格2 有一个DateTime
列。我正在尝试将表1 中的数据插入表2 。但是如何添加日期时间(当前时间和日期)?
我对如何将其添加到我准备好的陈述中感到有点蠢。
DECLARE sqlquery text;
SET sqlquery = CONCAT('insert into partial_log select inaid, `PartNo`,`LineCode`,`EPartsPartNo`,`Surcharge`,`Price`,`CustomerDescription`,`ShortCode`,`PlusCode`,`LiveDate`,`CustomerPartNo`,`Alt1LineCode`,`Alt1PartNo`,`Alt1EPartsPartNo`,`Alt2LineCode`,`Alt2PartNo`,`Alt2EPartsPartNo`,`Alt3LineCode`,`Alt3PartNo`,`Alt3EPartsPartNo`,`Alt4LineCode`,`Alt4PartNo`,`Alt4EPartsPartNo`,`Alt5LineCode`,`Alt5PartNo`,`Alt5EPartsPartNo`,`Alt6LineCode`,`Alt6PartNo`,`Alt6EPartsPartNo`,`Alt7LineCode`,`Alt7PartNo`,`Alt7EPartsPartNo`,`Alt8LineCode`,`Alt8PartNo`,`Alt8EPartsPartNo`,`Alt9LineCode`,`Alt9PartNo`,`Alt9EPartsPartNo`,`Alt10LineCode`,`Alt10PartNo`,`Alt10EPartsPartNo`,',NOW(),',FROM itable order by `LineCode`,`PartNo`;');
set sqlquery=REPLACE(sqlquery,'inaid',inaid);
set sqlquery=REPLACE(sqlquery,'itable',itable);
SET @stat = sqlquery;
PREPARE stmt from @stat;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
我尝试使用concat添加Now(),但这不起作用并抛出无效的语法错误。
#42000您的SQL语法有错误;查看与您的MySQL服务器版本对应的手册,以便在'14:00:06附近使用正确的语法,在第{1}行的LineCode
,PartNo
'之后使用
更新 不需要CONCAT将NOW()添加到语句中。
DECLARE sqlquery text;
SET sqlquery = 'insert into partial_log select inaid, `PartNo`,`LineCode`,`EPartsPartNo`,`Surcharge`,`Price`,`CustomerDescription`,`ShortCode`,`PlusCode`,`LiveDate`,`CustomerPartNo`,`Alt1LineCode`,`Alt1PartNo`,`Alt1EPartsPartNo`,`Alt2LineCode`,`Alt2PartNo`,`Alt2EPartsPartNo`,`Alt3LineCode`,`Alt3PartNo`,`Alt3EPartsPartNo`,`Alt4LineCode`,`Alt4PartNo`,`Alt4EPartsPartNo`,`Alt5LineCode`,`Alt5PartNo`,`Alt5EPartsPartNo`,`Alt6LineCode`,`Alt6PartNo`,`Alt6EPartsPartNo`,`Alt7LineCode`,`Alt7PartNo`,`Alt7EPartsPartNo`,`Alt8LineCode`,`Alt8PartNo`,`Alt8EPartsPartNo`,`Alt9LineCode`,`Alt9PartNo`,`Alt9EPartsPartNo`,`Alt10LineCode`,`Alt10PartNo`,`Alt10EPartsPartNo`, NOW() FROM itable order by `LineCode`,`PartNo`;';
set sqlquery=REPLACE(sqlquery,'inaid',inaid);
set sqlquery=REPLACE(sqlquery,'itable',itable);
SET @stat = sqlquery;
PREPARE stmt from @stat;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
答案 0 :(得分:0)
CONCAT是完全没必要的,只会增加你的困惑。
您的查询可以像这样写
$string="22-22";
$finalResults = array();
$sql = "SELECT * FROM price WHERE info like '%$string%'";
$array = mysqli_query($sql,$con);
while($row=mysqli_fetch_array($array)){
$info = $rows['info'];
$result = explode(",", $info);
$search = array_filter($results, function($item) use ($string) {
return ( strpos($item, $string) !== false );
});
if (!empty($search[0])){
$finalResults[] = $search[0];
}
}
实际上只要SET sqlquery = 'insert into partial_log
select inaid, `PartNo`,`LineCode`,
`EPartsPartNo`,`Surcharge`,`Price`,
`CustomerDescription`,`ShortCode`,`PlusCode`,
`LiveDate`,`CustomerPartNo`,`Alt1LineCode`,
`Alt1PartNo`,`Alt1EPartsPartNo`,`Alt2LineCode`,
`Alt2PartNo`,`Alt2EPartsPartNo`,`Alt3LineCode`,
`Alt3PartNo`,`Alt3EPartsPartNo`,`Alt4LineCode`,
`Alt4PartNo`,`Alt4EPartsPartNo`,`Alt5LineCode`,
`Alt5PartNo`,`Alt5EPartsPartNo`,`Alt6LineCode`,
`Alt6PartNo`,`Alt6EPartsPartNo`,`Alt7LineCode`,
`Alt7PartNo`,`Alt7EPartsPartNo`,`Alt8LineCode`,
`Alt8PartNo`,`Alt8EPartsPartNo`,`Alt9LineCode`,
`Alt9PartNo`,`Alt9EPartsPartNo`,`Alt10LineCode`,
`Alt10PartNo`,`Alt10EPartsPartNo`, NOW()
FROM itable order by `LineCode`,`PartNo`;');
和partial_log
tabless中的列都具有相同的顺序,而itable
末尾只添加了新列datetime
你可以写这样的查询
partial_log