如果存在,请插入PHP

如果存在,请插入PHP,php,sql,pdo,Php,Sql,Pdo,我对if-else语句有一些问题,但我不知道是什么,因为它应该有效:) 我想做的是,如果我所在的行中已经存在视频标题,那么什么也不做, 但是,如果视频标题不存在,请在表中插入值 我在我的视频标题栏中有价值的marvel.mp4, 但它仍然继续在新行中插入marvel.mp4作为值 你知道为什么它不起作用吗 $query = $dbh->query("SELECT video_title FROM video"); $q = $query->

我对if-else语句有一些问题,但我不知道是什么,因为它应该有效:)

我想做的是,如果我所在的行中已经存在视频标题,那么什么也不做, 但是,如果视频标题不存在,请在表中插入值

我在我的视频标题栏中有价值的marvel.mp4, 但它仍然继续在新行中插入marvel.mp4作为值

你知道为什么它不起作用吗

     $query  =  $dbh->query("SELECT video_title FROM video");
     $q         =   $query->fetch(PDO::FETCH_OBJ);

     $video_title = "marvel.mp4";

        if($video_title ==$q){

            // Do Nothing

        }else{
        $sql = "INSERT INTO video (video_title, video_cat, video_date) VALUES (:video_title,    :video_cat, NOW())";
            $query = $dbh->prepare($sql);
            $query->execute(array(
            ':video_title' => $video_title,
            ':video_cat' => $video_cat
            ));     
            }
应该是:

if ($video_title == $q->video_title)
使用
PDO::FETCH_OBJ
时,每列都是对象的属性

您还需要在查询中更加具体,否则您只是测试视频是否是查询返回的第一个视频

$video_title = "marvel.mp4";
$stmt - $dbh->prepare("SELECT video_title FROM video WHERE video_title = :title");
$stmt->execute(array(':title' => $video_title));
$q = $stmt->fetch(PDO::FETCH_OBJ);

此代码将解决您的问题。我刚刚测试并运行了它,正在工作。 如果你觉得这个帮助很棒,请给我打分……Sectona

<?php

$db = new PDO (

    'mysql:host=localhost;dbname=sectona_db;charset=utf8', 

    'root', // username
    'tt56u' // password

);

?>


<?php

require("pdo.php");


$video_t=strip_tags($_POST["video_t"]);


//check if the video title already exist in the database


$result = $db->prepare('SELECT * FROM video where video_title = :video_title');

        $result->execute(array(
            ':video_title' => $video_t
    ));



$nosofrows = $result->rowCount();
if ($nosofrows == 1)
//if ($nosofrows ==0)
{
echo '<br><b><font color=red><b></b>Video Title Already exist. Do not insert</font></b><br>';
exit();
}else{

// insert data

$statement = $db->prepare('INSERT INTO video(video_title,video_name)
                          values
                                                   (video_title,video_name)')
$statement->execute(array( 

':video_title' => $video_t,
':video_name' => 'Commando'


));

}

?>


您使用的是什么SQL server?一些rdbms有一种比其他rdbms更简单的方法。我这样问是因为尽管你可以像上面所说的那样做,但它并不像在数据库端那样安全。我使用的是Mysql,如果你有另一个解决方案,如果你和我分享,那就太棒了:)好吧,也许我误解了你的问题。但是如果问题是“如果存在,则更新,否则插入”,那么MySQL有一个语法来表示感谢,这一点越来越清楚:)PS:数组中缺少一个parentes:)