使用Mysqli bind_param与日期和时间列?

时间:2009-04-30 07:51:24

标签: php mysql mysqli

如何使用PHP mysqli和bind_param将数据插入MySQL日期或时间列?

8 个答案:

答案 0 :(得分:78)

与任何其他字符串一样

$stmt = $mysqli->prepare('insert into foo (dt) values (?)');
$dt = '2009-04-30 10:09:00';
$stmt->bind_param('s', $dt);
$stmt->execute();

答案 1 :(得分:12)

PHP中的时间戳是整数(来自UNIX纪元的秒数​​)。上面的替代方法是使用整数类型的日期/时间参数,MySQL函数FROM_UNIXTIMEUNIX_TIMESTAMP

$stmt = $mysqli->prepare("INSERT INTO FOO (dateColumn) VALUES (FROM_UNIXTIME(?))");
$stmt->bind_param("i", $your_date_parameter);
$stmt->execute();

答案 2 :(得分:1)

我使用了date()函数,这解决了我的问题。

$stmt = $mysqli->prepare("INSERT INTO FOO (dateColumn) VALUES ?");
// 6/10/2015 10:30:00
$datetime = date("Y-m-d H:i:s", mktime(10, 30, 0, 6, 10, 2015));
$stmt->bind_param("s", $datetime);
$stmt->execute();

答案 3 :(得分:1)

对于当前日期/时间,您可以使用MySQL标准例程。你没必要做好准备。

$query  = "INSERT INTO tablename ";
$query .= "VALUES(?,?,?,NOW()) ";
$preparedquery = $dbaselink->prepare($query);
$preparedquery->bind_param("iii",$val1,$val2,$val3);

答案 4 :(得分:0)

使用mySQL函数now()获取时间戳字段。

答案 5 :(得分:0)

首先设定日期&时间使用date()函数 -

$date=date("d/m/y");
$time=date("h:i:sa");
然后将

传递给预准备语句,就像任何其他字符串变量一样 -

$stmt = $mysqli->prepare("INSERT INTO FOO (dateColumn, timeColumn) VALUES (?,?)");
$stmt->bind_param("ss", $date , $time);
$stmt->execute();

答案 6 :(得分:0)

我的回答可能有点题外话。传递日期时,bind_param有问题。日期为(mm/dd/yyyy hh:mm:ss)格式。 MySQL并没有在bind_param中采用(yyyy/mm/dd)格式(这是MySQL中日期类型的默认格式)。

以下日期格式解决了该问题:

date('Y/m/d', strtotime($date_variable))

答案 7 :(得分:-1)

$ q =“插入order_details(order_id,product_id,product_name,product_quantity,product_price,created_at,updated_at)值(?,?,?,?,?,NOW(),NOW())”;

            $stmt = mysqli_prepare($dbc, $q);

mysqli_stmt_bind_param($ stmt,'iisid',$ ord,$ pid,$ _SESSION ['product_name'],$ qty,$ price);