-1

我正在尝试将 html5 输入类型日期变量作为参数传递给存储过程。查询在我的php页面中成功执行,但存储过程插入的表中的列日期值标记为0000-00-00。

请告诉我哪里出错了。谢谢你的时间。

<?php include 'config.php';
if(isset($_POST['submitbtn'])){
$date = $_POST['datefield'];
$newDate = date("Y-m-d", strtotime($date));

$result = mysql_query("Call seat(".$newDate.")");

if($result == FALSE){
    echo "Sorry Query Failed!";
}
else
{
    echo "Success";
}

}
?>

<html>
<head>

</head>
<body>
<form method="post">
<input type="date" name="datefield"><br>
<input type="submit" name="submitbtn">
</form>
</body>
</html>

sql fn:

CREATE DEFINER=`root`@`localhost` PROCEDURE `seat`(IN `dateP` VARCHAR(20))
NO SQL
begin
declare i int default 1;
while i < 250 do
insert into seat (Seat_ID,dateP) values (i,dateP);
set i = i + 1;
end while;
end

座位表结构:

CREATE TABLE IF NOT EXISTS `seat` (
`ID` int(100) NOT NULL AUTO_INCREMENT,
 `Seat_ID` int(4) NOT NULL,
 `Row_ID` varchar(2) NOT NULL,
 `Col_ID` int(4) NOT NULL,
 `Amount` int(3) NOT NULL,
 `DateP` date NOT NULL,
 PRIMARY KEY (`ID`)
)
4

2 回答 2

0

首先,您必须将 html 中的任何值转换为 php 日期。之后你应该能够将它传递给你的存储过程,假设它是数据库可以理解的格式。查看 php DateTime 函数:http ://www.php.net/manual/en/function.getdate.php

于 2013-09-18T15:08:43.223 回答
0

问题可能就在那里:

$result = mysql_query("Call seat(".$newDate.")");

请向我们提供您正在调用的 sql 函数。

此外,当您在 SQL 函数中插入日期时,您可能会出错。

请确保您的 sql 函数在“”之间插入您传递的日期。

如果您正在执行以下查询:

mysql_query("INSERT INTO tablename (ID, Date) VALUES ($id, $date)")

它将插入 0000-00-00。

这是正确的:

mysql_query("INSERT INTO tablename (ID, Date) VALUES ($id, '$date')")

还:

看看mysqli_query

mysql_query 已弃用!..

编辑:

你在那里,你的错误可能就在那里!:

insert into seat (Seat_ID,dateP) values (i,dateP);

试试这个 :

insert into seat (Seat_ID,dateP) values (i,'dateP');
于 2013-09-18T15:22:38.693 回答