PHP MYSQL插入帮助无错误

PHP MYSQL插入帮助无错误,php,mysql,sql,Php,Mysql,Sql,我试图借助我的添加视频提交表单来更新另一个mysql表,以跟踪提交者发布的视频链接。我试图通过使用MAX()将插入到提交表中的最后一个videoId插入视频ID,用户名将仅从:submitter获取,postedOn使用now()获取时间戳。使用提交表单后,adminposts表中没有输入任何数据,并且我没有收到任何错误。谢谢你的帮助 <?php require_once '../connection.php'; $sql = "INSERT INTO videoin

我试图借助我的添加视频提交表单来更新另一个mysql表,以跟踪提交者发布的视频链接。我试图通过使用MAX()将插入到提交表中的最后一个videoId插入视频ID,用户名将仅从:submitter获取,postedOn使用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'
    ?>

正如对问题的注释所强调的那样,您不需要执行任何错误检查,如果您希望执行该路线,则需要为MAX(videoId)创建别名

但是,对于您的特定用例,我建议查看PDO::lastInsertId()以获取刚才插入的videoId


这将消除显式写出第二个查询的需要,并将MAX()列命名为别名。

以下内容适用于我:

我必须指出,您不能使用
$postedOn=now()
作为一个变量,用于发布当前时间/日期。它需要作为
值的一部分输入

例如:
值(: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(col\u name)
将在结果集中返回为
max(col\u name)
,所以使用as
选择max(videoId)作为videoId
$postedOn=now()
postedOn=now()
值(:videoId,:username,postedOn=now());
)这张图片怎么了?我建议你
var\u dump($videoId)紧跟在
$videoID=$record['videoID']之后并查看您是否从中获得了任何信息。下面的答案有帮助吗@Runboy Runhuzza!成功。谢谢你的帮助!不客气,很高兴我能帮上忙。这是一个有趣的项目。干杯@runboyrunTalk关于多跑一英里。另外,谈论熬夜/当我觉得我可以解决它,并在别人的一天(在我的情况下,lol的夜晚)的不同,是的,我喜欢去“额外的英里”。我有点像个夜猫子,但我确实很快就睡着了
<?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();

    }