2014-11-20 34 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' 


)); 

} 

?> 
相關問題