$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')"); )
}
将有多个调用同时查询。我使用此方法避免多次插入,但有时会插入多行。请帮助我。提前谢谢。
感谢您的帮助..
我不是在循环中调用此代码,而是同时从不同用户进行多次调用。
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."')");
}
如果对
托管 PHP 的 Web 服务器有多个同时请求,则选择可能不会为其中多个请求返回任何结果,然后由于每个此类请求执行插入,可能会有多个插入。
如果您运行的不是 Windows 并且只有一个 Web 服务器,则可以使用 PHP 的信号量同步对此代码的访问。
但更好的是,你能在 mysql 中对表中此列的值进行唯一约束吗?
虽然你的代码是正确的,不应该再次插入,但是
您应该向字段添加唯一键,然后使用插入忽略
"INSERT IGNORE INTO table_name(col_name)VALUES('$val')"