
这是url传递参数的代码:
XML/HTML code
<td align="left"><a href="choosephprelation_id='$row['user_id']'&user_id='$_COOKIE['user_id']'">一键关注</a></td>
;
这是插入数据库的代码:
PHP code
<php
header("Content-Type:text/html; charset=utf-8");
include('MY_PHP_file/mysql_connectphp');
$user_id = $_GET['user_id'];
$relation_id = $_GET['relation_id'];
$sql = "INSERT INTO user_action (user_id, relation_id, concern_time) VALUES ('$user_id', '$relation_id', now())";
$state = mysql_query($sql);
if($state)
{
echo "<script>alert('一键关注成功!!'); locationhref='user_actionphp';</script>";
}
else
echo '<script>alert("一键关注失败,请重试!!"); locationhref="user_actionphp";</script>';
>
$state = mysql_query($sql);
if($state)
按我的理解这里执行了两次。
解决方法直接是 if(mysql_query($sql))就可以了
封装 SqlConnection,定义成Static ,或者用singleton
public class CustomisedConnection
{
public static CustomisedConnection ConnectionInstance = new CustomisedConnection();
SqlConnection _conn;
private CustomisedConnection(){_conn = new SqlConnection();}
}
调用CustomisedConnectionConnectionInstance 就好了
首先,你的这个database成员变量没有加修饰符,是非静态的,protected的,在static的方法中调用是会出语法错误的。
其次,维持数据库连接是不科学的,数据库服务器的承受能力也有限,所以应该是每次访问数据库的时候打开连接,访问结束之后立即释放。
是否需要反复实例化要看这个CommonDataAccessLayerDatabase类是怎么写的,如果这个类在GetDataReader方法里做的ConnectionOpen()和ConnectionClose()(SqlConnection 或者其他),那么只实例化一次是OK的(这样做也是符合常理的)。否则的话就应该每次调用方法都重新实例化。
我看到每个GetDataReader之后都有一个Close()方法,那么我认为应该是第一种情况。
----------------------------------------------------------------------
首先很抱歉,我不用QQ
关于Database类的代码:
我觉得如果你对它的功能要求不是很复杂的话,可以把Open和Close方法去掉(或者改成private的),把打开和关闭连接的 *** 作都整合到访问数据库的方法中,以达到更好的封装效果。当然如果你的程序需要暴露Open和Close 的接口就算了。
----------------------------------------------------------------------
看来你还不是很理解“封装”的概念。封装的意思是隐藏代码,就是说提供尽量简单的接口,使用者只知道这个接口可以做什么事情,但不知道具体的实现途径。例如这里,如果将Open和Close整合到GetDataReader中,我只知道可以获得一个DataReader,但不知道需要先Open,获得DataReader,然后Close这样的过程。目前你的做法是这样的:在GetDataReader中Open,但是需要调用DataBaseClose方法来关闭。我看过你的第一段代码就可以猜出里面大致是如何实现的了,这就说明封装的不完善。
以上就是关于为什么每一次往数据库加入数据时,都会加入插入两行一样的信息全部的内容,包括:为什么每一次往数据库加入数据时,都会加入插入两行一样的信息、C#中我如何在FORM1窗体连接一次数据库 FORM2 FORM3都不用连了 直接能用这个库了、一个类中多次连接数据库,只实例化一次可以吗等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)