簡體   English   中英

如何在插入表時使用mysql存儲過程

[英]how to use mysql stored procedure with insert into table

<?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頁面中使用它時失敗。 有人幫忙嗎?

您也可以將過程存儲到數據庫中,然后像這樣將其調用到您的代碼中,而不是在代碼中編寫過程

<?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]; 
  }
?>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM