0

我的php代码如下:

<?php
    $conn = mysql_connect("localhost","root","") or die(mysql_error());
    mysql_select_db("dbcsv",$conn);
    $data = array();
    $sql = "select orig,dlvSourceIp from tblcsv group by dlvSourceIp";
    $res = mysql_query($sql) or die(mysql_error());
     echo '<table border="1px">';
     echo "<tr><td>Dormain</td><td>ip of the domain</td><td>Total Mail</td><td>Mail Fail</td><td>Percentage</td></tr>";
        while($data = mysql_fetch_array($res)){
             //echo "<tr><td>".$data['orig']."</td><td>".$data['dlvSourceIp']."</td><td></td><td></td></tr>";
            $t = $data['orig'];
             $getData = array_unique($t);
             var_dump($getData);
}
?>

笔记

因为$data['orig']是我从数据库中选择的数据数组,它将显示:cat cat dog cat dog. 我想要这样的输出:cat dog这就是我使用数组唯一的原因。

问题:

我收到错误消息array_unique() expects parameter 1 to be array, null given in C:\wamp\www\CountLine_CSV\csv2mysql.php on line 21如何解决?请任何人帮助我,谢谢。

4

1 回答 1

1

您的数组作为字符串值存储到表中(所以我认为)。您需要获取条目explode并创建一个数组,然后使用它array_unique来获得您想要的效果。尝试以下方法,看看它是否有效:

$t = $data['orig']
$array = explode(" ", $t);
$array = array_unique($array);
print_r($array);

此外,请考虑使用 MySQLi 或 PDO 进行查询。

所以总的来说,类似以下的内容就足够了:

<?php   
    $mysqli_connection = new mysqli("hostname", "username", "password", "database");
    if ($mysqli_connection->connect_errno) {
        echo ("Connection Failure");
        exit();
    }

    $sql = "SELECT orig, dlvSourceIp FROM tblcsv GROUP BY dlvSourceIp";
    echo '<table border="1px">';
    echo "<tr><td>Dormain</td><td>ip of the domain</td><td>Total Mail</td><td>Mail Fail</td><td>Percentage</td></tr>";
    while($data = $sql->fetch_array(MYSQLI_ASSOC)) {
        $t = $mysqli_connection->real_escape_string($data['orig']);
        $array = explode(" ", $t);
        $array = array_unique($array);
        // Do something with the array, or:
        print_r($array);
    }
    $sql->free();
    $mysqli_connection->close();
?>
于 2012-08-29T03:05:41.367 回答