Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用PHP5.3在插入之前检查MySQL行中的数据_Php_Mysql_Php 5.3 - Fatal编程技术网

使用PHP5.3在插入之前检查MySQL行中的数据

使用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 + +-------------+-----------+ +-------------+----

在使用PHP5.3进行insert之前,我想检查URL是否已经在表中可用

+-------------+-----------+ + durl + surl + +-------------+-----------+ + abc + xyz + + mno + pqr + + efg + jkl + +-------------+-----------+ +-------------+-----------+ +杜尔+苏尔+ +-------------+-----------+ +abc+xyz+ +mno+pqr+ +efg+jkl+ +-------------+-----------+ 如果我添加abc,它会给我存储在第2列[surl]xyz中的值。
若并没有,则将其添加到数据库中

<?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'";