【发布时间】:2016-12-13 11:54:20
【问题描述】:
我是 android 开发的新手,我正在通过 android 应用程序发送一个 json 数组并将该数据插入 MySQL 数据库。问题是,每当我插入 userJSON 时,它每次都会输入重复的条目。所以,我想防止在mysql中重复输入,这怎么可能用php。请帮我解决这个问题。
来自android端的json字符串
'[{"type":"Outgoing","duration":"0","number":"XXXXXXXX","date":"Tue Dec 13 15:26:29 GMT+05:30 2016"},
{"type":"Outgoing","duration":"0","number":"XXXXXXXX","date":"Tue Dec 13 13:49:50 GMT+05:30 2016"}]';
这是我用于发布 json 的 php 文件:
<?php
require_once('conn.php');
if($_SERVER['REQUEST_METHOD']=='POST')
{
$json = $_POST["usersJSON"];
echo $json;
if (get_magic_quotes_gpc())
{
$json = stripslashes($json);
}
$data = json_decode($json,true);
$query=mysqli_query($con,"SELECT *
FROM users
where number = '$number'
and type = '$type'
and date = '$date'
and duration= '$duration'");
if(mysqli_num_rows($query)>0) {
echo "already exist";
}
elseif(is_array($data))
{
$sql = "INSERT IGNORE INTO users (type, duration, number,date) values ";
$valuesArr = array();
foreach($data as $row)
{
$type = mysqli_real_escape_string( $con,$row['type'] );
$duration = mysqli_real_escape_string($con, $row['duration'] );
$number = mysqli_real_escape_string( $con,$row['number'] );
$date = mysqli_real_escape_string( $con,$row['date'] );
$valuesArr[] = "('$type', '$duration', '$number', '$date')";
}
$sql .= implode(',', $valuesArr);
if(mysqli_query($con,$sql))
{
echo 'Entry Added Successfully';
}
else
{
echo 'Could Not Add Entry';
}
}
//Closing the database
mysqli_close($con);
}
?>
【问题讨论】:
-
绝对不使用 PHP,您可以通过在数据库中的相关列上创建唯一索引来做到这一点
-
@e4c5 请你解释一下我怎样才能给唯一的索引或给我一个链接
-
@Blueblazer172 我只是想停止重复数据库输入,我该如何实现?
-
是的,我想要 php 方面的那个 @Blueblazer172
-
你不能在 PHP 端可靠地做到这一点。如果您的脚本的两个实例碰巧同时插入了相同的数据,那么无论您做什么,都会有一个副本。这被称为竞争条件。以任何程度的可靠性做您想做的事情的唯一方法是对数据库表强制执行唯一约束。
标签: php android mysql arrays json