是否存在其他插入PHP
问题描述:
我有一些问题,我如果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
));
}
答
它应该是:
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
答
此代码将解决您的问题。我刚刚测试并运行它并正在运行。 请给我评分,如果你发现这个帮助真棒.... 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服务器?有些rdbms比其他的更简单。我这样问,因为虽然你可以做到像上面展示的那样,但它并不像在数据库一边做的那样安全。 – developerwjk 2014-11-20 23:19:35
我正在使用Mysql, 如果您有其他解决方案,如果您与我分享它,那将是非常棒的:) – Dymond 2014-11-20 23:49:57
嗯,也许我误解了您的问题。但如果问题是“如果存在更新,否则插入”,那么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