热搜:NVER node 开发 php

php通过url传递参数后同时向数据库写入两条相同记录

2024-08-20 12:45:02
php通过url传递参数后同时向数据库写入两条相同记录

我通过a.php页面通过url向b.php页面传递了两个参数,并通过b.php页面向mysql数据库写入传递的这两个参数,为什么在数据库中增添了两条相同的记录,但如果不传参数就正常写入一天记录,改为传递一个参数也会写入两个相同的记录,这是写入记录的代码:

<?phpheader("Content-Type:text/html; charset=utf-8");include('MY_PHP_file/mysql_connect.php');$sql = "INSERT INTO user_action (user_id, relation_id, concern_time) VALUES ({$_GET['user_id']}, {$_GET['relation_id']}, now())";// $sql = "INSERT INTO user_action (user_id, relation_id, concern_time) VALUES (0, 9, now())";if(mysql_query($sql));echo '';// else// echo '';?>

这个问题弄一天了,望大神指导


回复讨论(解决方案)

你不是说搞定了吗?

按照你的 sql 指令串
$sql = "INSERT INTO user_action (user_id, relation_id, concern_time) VALUES ({$_GET['user_id']}, {$_GET['relation_id']}, now())";
当不传递参数时实际执行的是
INSERT INTO user_action (user_id, relation_id, concern_time) VALUES (, , now())
这是错误的指令,不可能有数据插入
但你却说“如果不传参数就正常写入一条记录”,显然这条记录是在其他地方插入的

你的代码不止这一点吧,可能受其他地方影响了。

你不是说搞定了吗?

按照你的 sql 指令串
$sql = "INSERT INTO user_action (user_id, relation_id, concern_time) VALUES ({$_GET['user_id']}, {$_GET['relation_id']}, now())";
当不传递参数时实际执行的是
INSERT INTO user_action (user_id, relation_id, concern_time) VALUES (, , now())
这是错误的指令,不可能有数据插入
但你却说“如果不传参数就正常写入一条记录”,显然这条记录是在其他地方插入的


就是因为传递参数后会插入两条数据,所以有一条是用来测试了!之前极少概率会正确插入一条,所以应该是参数的问题

你不是说搞定了吗?

按照你的 sql 指令串
$sql = "INSERT INTO user_action (user_id, relation_id, concern_time) VALUES ({$_GET['user_id']}, {$_GET['relation_id']}, now())";
当不传递参数时实际执行的是
INSERT INTO user_action (user_id, relation_id, concern_time) VALUES (, , now())
这是错误的指令,不可能有数据插入
但你却说“如果不传参数就正常写入一条记录”,显然这条记录是在其他地方插入的


他的问题感觉就是页面跳转的时候的问题。可能不像他描述的只有这部分的代码,他全部的代码可能在执行这个点击的时候执行了其他插入数据库的操作,能不能加个参数,识别是通过本页面(本点击操作)传递插入值的,也就是mysql中user_id, relation_id, concern_time后再加一个字段s_url然后把值插入进去,看看两条记录中s_url的值是不是一样的

我通过a.php页面通过url向b.php页面传递了两个参数,并通过b.php页面向mysql数据库写入传递的这两个参数

先直接调用b.php 看看是否插入两条记录。
如果b.php正常,则问题在a.php,反之亦然。

只看你提供的代码,是不会插入两条记录,因为只有一条insert语句。

楼主你看下从a页面到b页面的请求头是不是有Referer信息,这个可能会造成重复发送语句的问题。再试试直接在地址栏输入b页面地址带上参数看看会不会写入相同的数据