在MySQL中存储由PHP中的gmdate()生成的值

在MySQL中存储由PHP中的gmdate()生成的值,php,mysql,Php,Mysql,我有以下代码: $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->

我有以下代码:

$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为in,则查询不起作用

我尝试在将(string)转换为$vid_length时生成vid_length列time、datetime和varchar/text

有什么建议可以让这项工作顺利进行吗

Ps:$vid_长度变成00:02:39格式(转换秒后)
$ytarr['length\u seconds']是一个数字(即264s秒)

我只需将每个发送到数据库的值的变量直接插入数据库
(vid\u length VARCHAR(255)非空)

您可以尝试在查询中执行转换

您还错过了
:video\u url
:vid\u 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']
));

你可以发布$ytarr['length\u seconds']和$vid\u length的值吗?例如:00:02:39,这看起来像mysql的'time'到methat是vid\u length,length\u seconds应该是159@naveengoyal知道我可以测试什么吗?不知道。但是你可以试试(字符串)$vid_长度。这只是一个尝试。可能是它的工作…OP正在使用一个现代化的库,并保护自己免受SQL注入。建议切换到一个不推荐使用的库并编写不安全的代码是一个糟糕的建议。没错,我使用了一个来自givenUPDATE的示例:这样做有效吗?还是仍然不安全?请看一看。没有必要浪费时间编写自主开发的解决方案。此外,您的更改正在提交的数据。当然,在遗留mysql扩展中发现的漏洞不会得到修复。谢谢——这实际上也是我现在正在使用的(我只是不将变量传递给其他变量)。谢谢——逗号确实是错误。当我最终开始显示错误时,我开始了解它。
/*
$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']
));