2014-11-20 89 views
0

我有一些问题,我如果else语句,但我不能想出什么,因为它应该工作:)是否存在其他插入PHP

什么即时试图做的是,如果VIDEO_TITLE已经存在我的行然后什么都不做, ,但如果video_title不存在,则向表中插入值。

我有值marvel.mp4在我的VIDEO_TITLE列, 但它仍然保持在插入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 
      ));  
      } 
+1

你用什么SQL服务器?有些rdbms比其他的更简单。我这样问,因为虽然你可以做到像上面展示的那样,但它并不像在数据库一边做的那样安全。 – developerwjk 2014-11-20 23:19:35

+0

我正在使用Mysql, 如果您有其他解决方案,如果您与我分享它,那将是非常棒的:) – Dymond 2014-11-20 23:49:57

+0

嗯,也许我误解了您的问题。但如果问题是“如果存在更新,否则插入”,那么MySQL有[INSERT ... ON DUPLICATE KEY UPDATE]的语法(http://dev.mysql.com/doc/refman/5.0/en/insert -on-duplicate.html) – developerwjk 2014-11-21 00:05:48

回答

2

它应该是:

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); 
+0

谢谢,这是越来越清晰:) 聚苯乙烯:有一个parentes数组中缺少:) – Dymond 2014-11-20 23:48:38

0

此代码将解决您的问题。我刚刚测试并运行它并正在运行。 请给我评分,如果你发现这个帮助真棒.... 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' 


)); 

} 

?> 
相关问题