MySQL重复检查不起作用

时间:2011-08-31 03:38:48

标签: php mysql dreamweaver

我试图让用户上传一些东西到我网站的数据库,但我想在我让他们上传它之前检查它是否已经存在。现在我的所有代码都是在第一个代码块中用Dreamweaver编写的,除了isO函数是我试图让它工作的一部分。

这是我的代码:

    <?php require_once('../Connections/Main.php'); ?>
    <?php
    if (!function_exists("GetSQLValueString")) {
    function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "") 
    {
    if (PHP_VERSION < 6) {
    $theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
    }

    $theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);

    switch ($theType) {
     case "text":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;    
    case "long":
    case "int":
      $theValue = ($theValue != "") ? intval($theValue) : "NULL";
      break;
    case "double":
      $theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
      break;
    case "date":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;
    case "defined":
      $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
      break;
     }
     return $theValue;
     }
     }

     mysql_select_db($database_Main, $Main);
     $query_youtube = "SELECT video_id FROM youtube";
     $youtube = mysql_query($query_youtube, $Main) or die(mysql_error());
     $row_youtube = mysql_fetch_assoc($youtube);
     $totalRows_youtube = mysql_num_rows($youtube);

     $editFormAction = $_SERVER['PHP_SELF'];
     if (isset($_SERVER['QUERY_STRING'])) {
     $editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
     }

     function isO($sample) {
     mysql_select_db($database_Main, $Main);
    $dbunames = mysql_query("SELECT * FROM youtube WHERE video_id='".$sample."'", $Main);
    echo ($dbunames);
    if(mysql_num_rows($dbunames) == $sample ) { //check if there is already an entry for that username
    echo "this video has alreday been submited";
    return false ;
    } else {
    return true;
    }
    }

    $pieces = explode("=", $_POST['url']);
    $Ndone = $pieces[1];
    $pieces = explode("&", $Ndone);
    $done = $pieces[0];
        if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "youtube" && isO($done))) {

        $insertSQL = sprintf("INSERT INTO youtube (video_id) VALUES (%s)",
                       GetSQLValueString($done, "text"));

         $Result1 = mysql_query($insertSQL, $Main) or die(mysql_error());
}
?>

         <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Untitled Document</title>
<script src="../SpryAssets/SpryValidationTextField.js" type="text/javascript"></script>
        <link href="../SpryAssets/SpryValidationTextField.css" rel="stylesheet" type="text/css" />
        </head>
        <style type="text/css">
        .text_box {
    text
    font-size: 9px;
    color: #000;
    }
    </style>
    <body>
     <?php 
     if (isset($_POST['url'])){
    echo "YouTube Video Submited";
    }
?>
     <form action="<?php echo $editFormAction; ?>" name="youtube" height="100px" method="POST" id="youtube">
    <span id="url">
    <input type="text" class="text_box" value="type in url of video " name="url" id="url2" />
    <span class="textfieldRequiredMsg">A value is required.</span><span class="textfieldInvalidFormatMsg">Invalid format.</span></span>
    </input>
    <input type="submit">
    <input type="hidden" name="MM_insert" value="youtube" />
    </p>
    </input>
    </form>
    <?php ?>
    <script type="text/javascript">
     var sprytextfield1 = new Spry.Widget.ValidationTextField("url", "url", {validateOn:        ["blur"]});
    </script>
    </body>
    </html>
    <?php
    mysql_free_result($youtube);
    ?>

1 个答案:

答案 0 :(得分:1)

改变这个:

if(mysql_num_rows($dbunames) == $sample )

到这个

if(mysql_num_rows($dbunames) >= 1)

mysql_num_rows计算返回的行数。如果返回1行,则表格中已存在id为$sample的记录