【问题标题】:Mysql insert and select query together convert to mysqlimysql插入和选择查询一起转换为mysqli
【发布时间】: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


【解决方案1】:

您的代码有两个问题。

  1. 您未能阅读 mysqli 准备语句的手册页。
  2. 正如另一个答案中所述,这里根本不需要准备好的语句、mysqi 和 SQL。

你只需要学习基本的日期操作

$date = strtotime('2015-11-10');
$end_date = strtotime('2015-11-15');
do {
    echo date('D',$date);
}while (($date = strtotime("+1 day",$date))  <= $end_date);

【讨论】:

  • 好吧,我不只是回应这一天!我有 2 个表,一个有用户 ID,然后 7 个列,每个有 mon-sun,每个员工每天工作不同的时间,所以查询假设 2015-11-10 是星期二,得到该员工周二的工作时间为 8 然后将用户 ID 日期和时间插入测试表数据库...
【解决方案2】:

看起来您正在使用 sql 中的 select 来进行日期格式设置。相反,您可以在 PHP 中进行日期格式设置。这将使 mysqli 插入一个普通的香草插入。

【讨论】:

  • select 语句在每一天的列中获取当天的工作时间,例如 id Mon = 8 Tue = 6 Wed = 4 Thu= 0 Fri = 6 Sat = 7 Sun = 0 并将它们插入测试表
猜你喜欢
  • 2012-05-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多