我的if else语句有问题,但是我无法弄清楚是什么,因为它应该有效:)
我想要做的是,如果 video_title 已存在于我的行中,则不执行任何操作, 但如果video_title不存在,请将值插入表格。
我的video_title列中有值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
));
}
答案 0 :(得分: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);
答案 1 :(得分: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'
));
}
?>