PHP MYSQL INSERT帮助无错误


PHP MYSQL INSERT help no errors

我试图在我的猪猪上添加一个视频提交表单来更新另一个mysql表,以跟踪提交者发布的视频链接。我试图通过使用MAX()插入到提交表中的最后一个视频ID插入视频ID,用户名将从:提交者和postdon使用now()来获取时间戳。在使用提交表单之后,没有数据输入到adminposts表中,我也没有得到任何错误。谢谢你的帮助。

<?php

    require_once '../connection.php';
    $sql = "INSERT INTO videoinfo
            (submitter,videoTitle,channelName,videoLink,videoLength)
            VALUES(:submitter,:videoTitle,:channelName,:videoLink,:videoLength)";
    $stmt = $dataconn -> prepare($sql); 
    $stmt -> execute(array(":submitter"=> $_POST['submitter'],
    ":videoTitle"=> $_POST['videoTitle'],
    ":channelName"=> $_POST['channelName'],
    ":videoLink"=> $_POST['videoLink'],
    ":videoLength"=> $_POST['videoLength']));
    $sql = "SELECT MAX(videoId) FROM videoinfo";
    $stmt = $dataconn->prepare($sql);   
    $stmt -> execute(array());
    $record = $stmt->fetch();
    $videoID = $record['videoId'];
    $username = $_POST['submitter'];
    $postedOn = now();
    $sql = "INSERT INTO adminposts
            (videoId,username,postedOn)
            VALUES(:videoId,:username,postedOn = now())";
    $stmt = $dataconn -> prepare($sql);
    $stmt -> execute(array(":videoId"=> $videoID,
                            ":username"=> $username));      


    echo "<h3>Video has been successfully added!";
    include 'adminmain.php'
    ?>

更新代码
    $sql = "SELECT MAX(videoId) AS videoId FROM videoinfo";
    $stmt = $dataconn->prepare($sql);   
    $stmt -> execute(array());
    $record = $stmt->fetch();
    $videoID = $record['videoId'];
    var_dump($videoID);
    $username = $_POST['submitter'];
    $postedOn = now();
    $sql = "INSERT INTO adminposts
            (videoId,username,postedOn)
            VALUES(:videoId,:username,$postedOn)";
    $stmt = $dataconn -> prepare($sql);
    $stmt -> execute(array(":videoId"=> $videoID,
                            ":username"=> $username));
$stmt->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

我使用了以下方法:

我必须指出,您不能使用$postedOn = now();作为变量来发布当前时间/日期。它需要作为VALUES

的一部分输入。

。: VALUES(:videoId,:username,NOW())";

请注意,我使用$pdo作为连接变量。

<?php
$mysql_hostname = 'xxx';
$mysql_username = 'xxx';
$mysql_password = 'xxx';
$mysql_dbname = 'xxx';
try {
$pdo= new PDO("mysql:host=$mysql_hostname;dbname=$mysql_dbname", $mysql_username, $mysql_password); 
     $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
     exit( $e->getMessage() );
}
$sql = "SELECT MAX(videoId) AS videoId FROM videoinfo";
$stmt = $pdo->prepare($sql);   
$stmt -> execute(array());
$record = $stmt->fetch();
$videoID = $record['videoId'];
// var_dump($videoID);
$username = $_POST['submitter'];
try {
$sql = "INSERT INTO adminposts
        (videoId,username,postedOn)
        VALUES(:videoId,:username,NOW())";
$stmt = $pdo -> prepare($sql);
$stmt -> execute(array(":videoId"=> $videoID,":username"=> $username));
}
catch(PDOException $e){
// $result = "Sorry, an error occurred while editing the database.";
// will print a message of the actual error should there be one
print $e->getMessage();
    }

正如对你的问题的评论所强调的那样,你不执行任何错误检查,如果你想走那条路,你需要为MAX(videoId)创建一个别名。

然而,对于您的特定用例,我建议查看PDO::lastInsertId()以获得您刚刚插入的videoId。http://www.php.net/manual/en/pdo.lastinsertid.php

这样就不需要显式地编写第二个查询,并为MAX()列设置别名。