2013-08-19 2 views
0

PHP 5.3을 사용하여 삽입하기 전에 URL이 이미 테이블에서 사용 가능한지 확인하고 싶습니다.PHP를 사용하여 삽입 전에 MySQL 행의 데이터 확인 5.3

 
+-------------+-----------+ 
+ durl + surl + 
+-------------+-----------+ 
+ abc  + xyz + 
+ mno  + pqr + 
+ efg  + jkl + 
+-------------+-----------+ 

만약 내가 abc를 추가한다면 그것은 col 2 [surl] xyz에 저장된 값을 준다.
그리고 그렇지 않은 경우 데이터베이스에 추가하십시오.

$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); 
+1

당신의 질문은 무엇입니까 ?? –

+0

그러나 mysql_num_rows는 PHP 5.3에서이 모든 다른 함수를 에러로 만든다 – Nilay

답변

0

귀하의 쿼리 및 @ raakesh로 db 형식이 텍스트 또는 varchar 경우 따옴표로 값을 래핑했다.

EG :

$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 
+0

반면에'tmp'가 PHP 변수라고 가정하면 쿼리 문자열은''select * from new이어야한다. 여기서 durl = '$ tmp' ". 이 시점에서 SQL injection에 대한 예방 조치를 취해야하며 mysql_ * 명령은 더 이상 사용되지 않으며 대신 mysqli_ * comannds를 사용해야한다는 점을 언급해야합니다. – cars10m

0

계속하기 전에 데이터베이스를 선택 -이 : 내가 TMP이 문자열은 인용에 다음 시도 일치 할 필요는 너무 valus입니다 생각하여 DB 필드 유형 ID 텍스트 또는 VARCHAR를 모두 확인

<?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); 
} 
?> 
0

MySQL의에서이 같은 "" ''로 문자열을 인용하거나해야

$query="select * from new where durl = 'tmp'"; 

을 TMP는 PHP 변수입니다, 당신은 코드를 좋아한다 그 :

$query="select * from new where durl = '$tmp'"; 
+0

하지만 mysql_num_rows는 PHP 5.3에서이 기능을위한 다른 함수를 제공합니다 – Nilay