如何检查mysql数据库中是否存在“title”

时间:2012-11-07 03:30:40

标签: php mysql

第一个stackoverflow问题一直在讨论!

功能:在允许INSERT之前检查并查看数据是否存在 - 尝试使其不具有案例感并且尽可能开放,因为标题我试图避免重复仅用于一个特定的艺术家(在下面解释)

表行结构如下

  • id(auto_increment)
  • 艺术家(仅指定给该艺术家的特定身份证号码)
  • 标题(我们正在努力确保我们不会仅为此艺术家提供重复标题

问题:未获得数据库中所需的数据或发布后定义的错误,if语句=未知确切的问题可能是错误的

$ _ POST [ '标题'];从用户输入传递

            if (isset($submit)) {
                $date = date("Ymd");
                $cleanTitle =  $_POST['title'];
                $querytitle = mysql_real_escape_string($_POST['title']);
                $queryalbum = mysql_real_escape_string($_POST['album']);

                // Check to see if Title exist for specfic Artist
                $checkTitle = mysql_query("SELECT * from lyrics WHERE artist = '$artist'");
                if (!$checkTitle) {
                    die('Query Failed');
                } 
                if ($checkTitle == $cleanTitle)  {
// do whatever
}
                print_r($checkTitle); // the data returned from the query

更新: INSERT IGNORE无法正常工作我正在通过$ artist插入数据,需要先查看该艺术家是否存在标题。或者我可能错了。我不确定如何做到这一点 $ artist是代码中定义较高的特定ID号

2 个答案:

答案 0 :(得分:0)

您的代码不正确,但这应该有效:

if (isset($submit)) {
    $date = date("Ymd");
    $cleanTitle =  $_POST['title'];
    $querytitle = mysql_real_escape_string($_POST['title']);
    $queryalbum = mysql_real_escape_string($_POST['album']);
    // !!! $artist is not actually set anywhere here..
    $checkTitle = mysql_query("SELECT * from lyrics WHERE artist = '$artist'");
    if (!$checkTitle) {
        die('Query Failed');
    } 
    /* now that you have run the query, you need to get the result: */
    // (This is assuming your query only returns one result)//
    $result = mysql_fetch_array($checkTitle);
    // now check the value for 'title'
    if ($result['title'] == $cleanTitle)  {
        // do whatever
    }
    print_r($result); // the data returned from the query
}

您正在运行查询,但未获得查询结果。您可以使用mysql_fetch_array()来获取结果。要获得多个条目的结果,您可以使用以下内容:

// will print the 'title' for each results
while ($row = mysql_fetch_array($checkTitle)) {
    echo $row['title'];
}

现在所有这些都说,你应该知道mysql_ *正在经历一个弃用过程,应该用mysqli或PDO代替。请阅读以下内容:

  

Please, don't use mysql_* functions in new code。它们不再被维护了    deprecation process已经开始了。见    red box?请转而了解prepared statements,然后使用    PDOMySQLi - this article会帮助您确定哪个。如果你选择    PDO,here is a good tutorial

答案 1 :(得分:0)

这是一个非常简单的代码来检查该标题是否有任何帖子(您可能已经知道,首先,该文件需要wp-blog-header.php)。

$title = 'mytitlee';

global $wpdb;
$id_ofpost_name = $wpdb->get_var("SELECT ID FROM $wpdb->posts WHERE post_name = $title");
$id_ofpost_title = $wpdb->get_var("SELECT ID FROM $wpdb->posts WHERE post_title = $title");
if ($id_ofpost_name || $id_ofpost_title) {echo 'Exists, here is the id:'.$id_ofpost_title.$id_ofpost_name;} 
else {echo 'post wasnt found';}