我正在尝试将html5输入类型日期变量作为参数传递给存储过程。 Query在我的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`)
)
答案 0 :(得分:0)
首先,您必须将html中的任何值转换为php日期。之后,你应该能够将它传递给你的存储过程,假设它是数据库可以理解的格式。请参阅php DateTime函数:http://www.php.net/manual/en/function.getdate.php
答案 1 :(得分:0)
问题可能在那里:
$result = mysql_query("Call seat(".$newDate.")");
请提供您正在调用的sql函数。
此外,当您在SQL函数中插入日期时,可能会出错。
请确保您的sql函数插入您传递BETWEEN''的日期。
如果你正在进行如下查询:
mysql_query("INSERT INTO tablename (ID, Date) VALUES ($id, $date)")
它将插入稿件。
这是正确的:
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');