使用PHP5.3在插入之前检查MySQL行中的数据
在使用PHP5.3进行insert之前,我想检查URL是否已经在表中可用 +-------------+-----------+ + durl + surl + +-------------+-----------+ + abc + xyz + + mno + pqr + + efg + jkl + +-------------+-----------+ +-------------+-----------+ +杜尔+苏尔+ +-------------+-----------+ +abc+xyz+ +mno+pqr+ +efg+jkl+ +-------------+-----------+ 如果我添加abc,它会给我存储在第2列[surl]xyz中的值。使用PHP5.3在插入之前检查MySQL行中的数据,php,mysql,php-5.3,Php,Mysql,Php 5.3,在使用PHP5.3进行insert之前,我想检查URL是否已经在表中可用 +-------------+-----------+ + durl + surl + +-------------+-----------+ + abc + xyz + + mno + pqr + + efg + jkl + +-------------+-----------+ +-------------+----
若并没有,则将其添加到数据库中
<?php
$dbhost = '****';
$dbuser = '****';
$dbpass = '****';
$conn = mysql_connect($dbhost, $dbuser, $dbpass);
if(! $conn )
{
die('Could not connect: ' . mysql_error());
}
$query="select * from new where durl = tmp";
$result = mysql_query($query);
if (mysql_num_rows($result)>0) {
// return value of col 2
}
else {
$sql = 'INSERT INTO new '.
'(durl,surl) '.
'VALUES ( "tmp", "XYZ")';
mysql_select_db('a4806808_my');
$retval = mysql_query( $sql, $conn );
mysql_close($conn);
}
?>
检查您的db字段类型id文本或varchar,我认为tmp是一个字符串值,因此您需要在引号中匹配
尝试:-
在继续查询之前选择您的数据库,如@Rakesh所说,如果数据库类型为text或varchar,请用引号将您的值括起来
例如:
$dbhost = '****';
$dbuser = '****';
$dbpass = '****';
$conn = mysql_connect($dbhost, $dbuser, $dbpass) or die(mysql_error());
mysql_select_db('a4806808_my') or die("couldn't select the database"); //select your database before continuing
$query="select * from new where durl = 'tmp'"; //use quotation marks around 'tmp' as rakesh said.
$result = mysql_query($query);
if (mysql_num_rows($result)>0) {
// return value of col 2
} else {
$sql = 'INSERT INTO new '.
'(durl,surl) '.
'VALUES ( "tmp", "XYZ")';
$retval = mysql_query( $sql, $conn );
}
mysql_close($conn); //close your connection after everything is done
在Mysql中,您应该引用一个带“”或“”的字符串,如下所示:
$query="select * from new where durl = 'tmp'";
如果tmp是一个php变量,那么您的代码应该如下所示:
$query="select * from new where durl = '$tmp'";
你的问题是什么?..但是mysql_num_行在PHP5.3中给出了一个错误。另一方面,如果tmp
应该是一个php变量,那么查询字符串应该是“select*from new where durl='$tmp'
。在这一点上,还应该提到的是,您将需要采取预防措施防止SQL注入,当然,mysql_*命令已被弃用,应改用mysqli_*comannds。但是mysql_num_行在PHP5.3中给出了一个错误,任何其他用于此操作的函数
$query="select * from new where durl = '$tmp'";