如果行数大于0则插入数据不起作用

时间:2013-11-14 11:32:12

标签: php mysql if-statement count rows

我有这个PHP函数,它会将URL插入MySQL,但只有那些在执行之前不存在的函数。我有一个问题,我的if条件被简单地忽略了,所以一切都进入数据库,忽略了条件。代码在这里:

function storeLink($url,$gathered_from) {

    global $conn;   
    $querycheck = "SELECT COUNT(*) FROM test WHERE link = '$url'";
    $resultcheck = mysqli_query($conn, $querycheck);
    $row = mysqli_fetch_array($resultcheck, MYSQLI_ASSOC);

    if($row['COUNT(*)'] < 1);
    {
       echo "<font color='red'>".$row['COUNT(*)']."</font>";
       $url = mysqli_real_escape_string($conn,$url);
       $gathered_from = mysqli_real_escape_string($conn,$gathered_from);
       $query = "INSERT INTO test (link, source) VALUES ('$url', '$gathered_from')";
       mysqli_query($conn,$query) or die('Error, insert query failed');
    }
}

我尝试使用MySQL计数和PHP mysqli_num_rows,但仍然相同。无论if语句中的条件是什么,它都会忽略它。请帮忙......

3 个答案:

答案 0 :(得分:3)

function storeLink($url,$gathered_from) {

    global $conn;   
    $querycheck = "SELECT COUNT(*) as CNT FROM test WHERE link = '$url'";
    $resultcheck = mysqli_query($conn, $querycheck);
    $row = mysqli_fetch_array($resultcheck, MYSQLI_ASSOC);

    if($row['CNT'] < 1) {
       echo "<font color='red'>".$row['CNT']."</font>";
       $url = mysqli_real_escape_string($conn,$url);
       $gathered_from = mysqli_real_escape_string($conn,$gathered_from);
       $query = "INSERT INTO test (link, source) VALUES ('$url', '$gathered_from')";
       mysqli_query($conn,$query) or die('Error, insert query failed');
    }
}

OR

function storeLink($url,$gathered_from) {

    global $conn;   
    $querycheck = "SELECT link FROM test WHERE link = '$url'";
    $resultcheck = mysqli_query($conn, $querycheck);
    $row = mysqli_fetch_array($resultcheck, MYSQLI_ASSOC);

    if(mysqli_num_rows($resultcheck)==0) {
       echo "<font color='red'>".mysqli_num_rows($resultcheck)."</font>";
       $url = mysqli_real_escape_string($conn,$url);
       $gathered_from = mysqli_real_escape_string($conn,$gathered_from);
       $query = "INSERT INTO test (link, source) VALUES ('$url', '$gathered_from')";
       mysqli_query($conn,$query) or die('Error, insert query failed');
    }
}

答案 1 :(得分:2)

试试这个if($row['COUNT(*)'] < 1){而不是if($row['COUNT(*)'] < 1);{

    function storeLink($url,$gathered_from) {

        global $conn;   
        $querycheck = "SELECT COUNT(*) as TotalRow FROM test WHERE link = '$url'";
        $resultcheck = mysqli_query($conn, $querycheck);
        $row = mysqli_fetch_array($resultcheck, MYSQLI_ASSOC);

        if($row['TotalRow'] == 0)
        {
           echo "<font color='red'>".$row['TotalRow']."</font>";
           $url = mysqli_real_escape_string($conn,$url);
           $gathered_from = mysqli_real_escape_string($conn,$gathered_from);
           $query = "INSERT INTO test (link, source) VALUES ('$url', '$gathered_from')";
           mysqli_query($conn,$query) or die('Error, insert query failed');
        }
    }

答案 2 :(得分:1)

INSERT INTO test (link, source) VALUES ('$url', '$gathered_from')
WHERE NOT EXISTS (
   SELECT COUNT(*) as TotalRow FROM test WHERE link = '$url'
) LIMIT 1;

正如您所看到的,只需1个查询即可完成整个工作