我的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
如何解决?请任何人帮助我,谢谢。
答案 0 :(得分: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();
?>