【发布时间】:2015-12-28 11:07:06
【问题描述】:
我有一个很好的 MySQL 查询,但是当我尝试将它转换为 MySQLI 时,我无法让它工作: 工作 SQL 查询
<?php
require_once( 'opendb.php' );
$id = '105';
// Start date
$date = '2015-11-10';
// End date
$end_date = '2015-11-15';
while (strtotime($date) <= strtotime($end_date)) {
$sql= "insert into test (Id,date,hours)
select Id,
'".$date."' as date,
case dayname('".$date."')
when 'Sunday' then Sun
when 'Monday' then Mon
when 'Tuesday' then Tue
when 'Wednesday' then Wed
when 'Thursday' then Thu
when 'Friday' then Fri
when 'Saturday' then Sat
else 0 end as hours
from emp where Id = '".$id."'";
mysql_query($sql);
$date = date ("Y-m-d", strtotime("+1 day", strtotime($date)));
}?>
不知道在同一个查询中有select和insert时如何使用Mysqli prepare语句。
MYSQLI 不工作不知道如何让它工作
<?php
$mysqli = new mysqli('localhost', 'xx', 'xx', 'xxx');
$id = '105';
// Start date
$date = '2015-11-10';
// End date
$end_date = '2015-11-15';
$stmt = $mysqli->prepare('INSERT INTO `test` (`Id`, `date`,`hours`) VALUES (?, ?, ?)');
while (strtotime($date) <= strtotime($end_date)) {
$sql= "select Id,
'".$date."' as date,
case dayname('".$date."')
when 'Sunday' then Sun
when 'Monday' then Mon
when 'Tuesday' then Tue
when 'Wednesday' then Wed
when 'Thursday' then Thu
when 'Friday' then Fri
when 'Saturday' then Sat
else 0 end as '".$hours."'
from emp where Id = 105 ";
$mysqli->query($sql);;
$stmt->bind_param('sss', $id , $date, $hours);
$stmt->execute();
$date = date ("Y-m-d", strtotime("+1 day", strtotime($date)));
}
?>
我了解如何在插入语句中使用准备,但当它是插入和选择语句时不了解
select 语句从表 1 中获取每一天的工作时间列,例如 id Mon = 8 Tue = 6 Wed = 4 Thu= 0 Fri = 6 Sat = 7 Sun = 0 并将它们插入到测试表中
【问题讨论】:
-
$mysqli->prepare('INSERT INTO
test(Id, missing报价 -
这只是 INSERT INTO test(id,date,hours) SELECT id, ?作为日期,大小写...否则结束为? FROM ...这应该是你准备的(在你开始循环之前)
-
不确定你是什么我有 2 个表,第一个表作为 empid,然后 mon -sun 作为列,然后每天作为他们在那天工作的小时数,然后我每天在日期范围内循环,例如 2015/10 /12 = 星期一所以 8 小时从表 1 中存储,因为他们在星期一工作。 MySQL 查询效果很好,举个例子就好了
标签: php mysql mysqli mysqli-multi-query