【问题标题】:how to use mysql stored procedure with insert into table如何使用mysql存储过程插入表
【发布时间】:2015-05-26 10:16:35
【问题描述】:
<?php

 $mysqli = new mysqli('localhost' 'root', "", 'scandi');

// check connection
if ($mysqli->connect_error) {
  trigger_error('Database connection failed: '.$mysqli->   connect_error , E_   USER_ERROR);
   }

$regid = mysqli_real_escape_string($mysqli, $_POST['regid']);
$startdate = mysqli_real_escape_string($mysqli, $_POST['startdate']);
$enddate = mysqli_real_escape_string($mysqli, $_POST['enddate']);

$query="DROP PROCEDURE IF EXISTS filldates ;

CREATE PROCEDURE filldates(dateStart DATE, dateEnd DATE)
BEGIN
 WHILE dateStart <= dateEnd
 DO
  INSERT INTO mydates (did,_date,regid) VALUES ('1',dateStart,'$regid');
 SET dateStart = date_add(dateStart, INTERVAL 7 DAY);
 END WHILE;
   END;
     CALL filldates('$startdate','$enddate')";

       if (mysqli_query($mysqli, $query)) {
    do {
     if ($result = mysqli_store_result($mysqli)) {
       mysqli_free_result ($result);
}
if (mysqli_more_results ($mysqli)) {

}
}while(mysqli_next_result ($mysqli));
}

  mysqli_close($mysqli)
?>

我想在表(mydates)中存储日期,$regid、$startdate、$enddate 由用户提供,'did' 是 auto_increament。上面没有 mysqli 的代码在 CLI 中运行良好并将日期存储在表中,但是当我尝试在 php 页面中使用它时失败。有人帮忙吗?

【问题讨论】:

  • 您不能将多个语句放入单个mysqli_query()。要么将它们作为单独的查询,要么使用mysqli_multi_query()
  • “但当我尝试在 php 页面中使用它时失败” 请包括您收到的错误消息。
  • 为什么不把过程提前存入数据库,而不是每次都在PHP脚本中定义呢?
  • 它没有显示错误,它只是不存储日期@Epodax
  • 我如何将程序存储在数据库中@Barma r

标签: php mysql stored-procedures mysqli-multi-query


【解决方案1】:

除了在代码中编写过程之外,您还可以将过程存储到数据库中,然后像这样将该过程调用到您的代码中

<?php 
  //connect to database
  $connection = mysqli_connect("hostname", "user", "password", "db", "port");

  //run the store proc
  $result = mysqli_query($connection, 
 "CALL ProcedureName()") or die("Query fail: " . mysqli_error());

  //loop the result set
  while ($row = mysqli_fetch_array($result)){   
  echo $row[0] . " - " . + $row[1]; 
  }
?>

【讨论】:

  • 谢谢大家,现在一切都按计划执行了,我刚刚用 mysqli_multi_query() 替换了 mysqli_query() 将尝试调用该过程,再次感谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-23
  • 1970-01-01
  • 2014-03-06
  • 2015-10-27
相关资源
最近更新 更多