我有这段代码:
$vid_length = gmdate("H:i:s", $ytarr['length_seconds']);
$query = $conn->prepare("INSERT INTO videos (owner_id, video_url, vid_length, thumbnail_url, title) VALUES (:owner_id, :video_url :vid_length, :thumbnail_url, :title) ");
$query->execute(array(
':owner_id' => $_POST['owner_id'],
':video_url' => $youtube_link,
':vid_length' => $vid_length,
':thumbnail_url' => (string) $ytarr['thumbnail_url'],
':title' => (string) $ytarr['title']
));
如果我删除与vid_length相关的代码,其他值将被妥善存储。 但是,使用vid_length时,查询不起作用。
我尝试将vid_length列时间,日期时间以及varchar / text转换为$ vid_length。
有任何建议使这项工作?
Ps:$ vid_length格式为00:02:39(转换秒数后) $ ytarr ['length_seconds']是一个数字(即264秒秒)
答案 0 :(得分:0)
您可以在查询中尝试使用SEC_TO_TIME(seconds)来执行转换。
你也错过了:video_url
和:vid_length
VALUES (:owner_id, :video_url :vid_length, :thumbnail_url, :title)
这样的事情可能会有所帮助:
/*
$vid_length = gmdate("H:i:s", $ytarr['length_seconds']);
*/
$query = "
INSERT INTO videos
(owner_id, video_url, vid_length, thumbnail_url, title)
VALUES (:owner_id, :video_url, SEC_TO_TIME(:length_seconds), :thumbnail_url, :title)";
$query = $conn->prepare( $query );
$query->execute(array(
':owner_id' => $_POST['owner_id'],
':video_url' => $youtube_link,
':length_seconds' => $ytarr['length_seconds'],
':thumbnail_url' => (string) $ytarr['thumbnail_url'],
':title' => (string) $ytarr['title']
));
答案 1 :(得分:-1)
我只需将每个值的变量直接插入数据库(vid_length VARCHAR(255) NOT NULL)
$vid_length = gmdate("H:i:s",$ytarr['length_seconds']);
$owner_id = $_POST['owner_id'];
$thumbnail_url = (string) $ytarr['thumbnail_url'];
$title = (string) $ytarr['title'];
$query = $conn->prepare("INSERT INTO videos (owner_id, video_url, vid_length, thumbnail_url, title)
VALUES (:owner_id, :video_url, :vid_length, :thumbnail_url, :title) ");
$query->execute(array(
':owner_id' => $owner_id,
':video_url' => $youtube_link,
':vid_length' => $vid_length,
':thumbnail_url' => $thumbnail_url,
':title' => $title
));