当插入查询同时多次调用时,避免多次插入

时间:2013-11-27 05:04:58

标签: php sql

$Link= mysql_connect("localhost", "root", "", "");
query = mysql_query($Link,"SELECT col_name FROM table_name WHERE col_name='$val'"); 
$num=mysql_num_rows($query);
if($num==0){   
    $query1 = mysql_query($Link,"INSERT INTO table_name(col_name)VALUES('$val')"); )
}

同时会有多个查询调用。我使用这种方法避免多次插入,但有时会插入多行。请帮帮我。提前谢谢。

感谢您的帮助..

我没有在循环中调用此代码,而是同时从不同用户进行多次调用。

3 个答案:

答案 0 :(得分:0)

mysql_query语法:resource mysql_query ( string $query [, resource $link_identifier = NULL ] )

 $query1 = mysql_query("INSERT INTO table_name (col_name)VALUES('".$val."')");

完整代码:

$Link= mysql_connect("localhost", "root", "", "");
$query = mysql_query($Link,"SELECT col_name FROM table_name WHERE col_name='".$val."'");
$num=mysql_num_rows($query);
if($num==0){
    $query1 = mysql_query("INSERT INTO table_name(col_name)VALUES('".$val."')");
}

答案 1 :(得分:0)

如果对托管PHP的Web服务器有多个同时请求,则select可能不会返回多个请求的结果,然后由于每个此类请求执行插入,可能会有多个插入

如果您没有运行Windows并且只有一个Web服务器,则可以使用PHP的信号量同步对此代码的访问。

但更好的是,你能在mysql的表中对这一列的值设置一个唯一约束吗?

答案 2 :(得分:0)

虽然您的代码是正确的,但不应再次插入,但

您应该在字段中添加唯一键,然后使用“插入忽略”

"INSERT IGNORE INTO table_name(col_name)VALUES('$val')"