mysql에 행이 있는지 확인하십시오.
PHPmysql에 행이 있는지 확인하십시오.
행이 있는지 확인하는 데 도움이 필요합니다. "이메일은 더 이상 존재하지 않습니다."publisher@example.com.
mysqli에 행이 있는지 확인하는 더 좋은 방법이 있습니까?
if (count($_POST)) {
$email = $dbl->real_escape_string(trim(strip_tags($_POST['email'])));
$passwd = $dbl->real_escape_string(trim(strip_tags($_POST['passwd'])));
$query = "SELECT `email` FROM `tblUser` WHERE `email` = '$email'";
$result = mysqli_query($dbl,$query);
if(is_resource($result) && mysqli_num_rows($result) == 1 ){
$row = mysqli_fetch_assoc($result);
echo $email . " email exists " . $row["email"] . "\n";
}
else{
echo "email no longer exists" . $email . "\n";
}
}
해결법
-
==============================
1.
다음은 행이 있는지 확인하기 위해 시험되고 검증 된 검증 된 방법입니다.
(일부는 나 자신을 사용하거나 과거에 사용 했음).
편집 : mysqli_query ()를 두 번 사용하는 구문에서 이전 오류가 발생했습니다. 개정판을 참조하십시오.
즉 :
if (! mysqli_query ($ con, $ query))는 단순히 if (! $ query)로 읽어야합니다.
사이드 노트 : ''. $ var. ''와 '$ var'는 모두 같은 일을합니다. 둘 중 하나를 사용할 수 있으며, 둘 다 유효한 구문입니다.
다음은 편집 된 두 가지 쿼리입니다.
$query = mysqli_query($con, "SELECT * FROM emails WHERE email='".$email."'"); if (!$query) { die('Error: ' . mysqli_error($con)); } if(mysqli_num_rows($query) > 0){ echo "email already exists"; }else{ // do something }
그리고 귀하의 경우 :
$query = mysqli_query($dbl, "SELECT * FROM `tblUser` WHERE email='".$email."'"); if (!$query) { die('Error: ' . mysqli_error($dbl)); } if(mysqli_num_rows($query) > 0){ echo "email already exists"; }else{ // do something }
mysqli_를 prepared statement 메소드와 함께 사용할 수도있다.
$query = "SELECT `email` FROM `tblUser` WHERE email=?"; if ($stmt = $dbl->prepare($query)){ $stmt->bind_param("s", $email); if($stmt->execute()){ $stmt->store_result(); $email_check= ""; $stmt->bind_result($email_check); $stmt->fetch(); if ($stmt->num_rows == 1){ echo "That Email already exists."; exit; } } }
또는 준비된 진술을 사용한 PDO 방법 :
<?php $email = $_POST['email']; $mysql_hostname = 'xxx'; $mysql_username = 'xxx'; $mysql_password = 'xxx'; $mysql_dbname = 'xxx'; try { $conn= new PDO("mysql:host=$mysql_hostname;dbname=$mysql_dbname", $mysql_username, $mysql_password); $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); } catch (PDOException $e) { exit( $e->getMessage() ); } // assuming a named submit button if(isset($_POST['submit'])) { try { $stmt = $conn->prepare('SELECT `email` FROM `tblUser` WHERE email = ?'); $stmt->bindParam(1, $_POST['email']); $stmt->execute(); while($row = $stmt->fetch(PDO::FETCH_ASSOC)) { } } catch(PDOException $e) { echo 'ERROR: ' . $e->getMessage(); } if($stmt->rowCount() > 0){ echo "The record exists!"; } else { echo "The record is non-existant."; } } ?>
N.B. :
위에 사용 된 양식 및 POST 배열을 다루는 경우 POST 배열에 값이 들어 있는지, 양식에 POST 메서드가 사용되고 입력에 대해 명명 된 특성이 일치하는지 확인하십시오.
참고 : - $ _POST [ 'var']는 일치합니다. $ _POST [ 'Var'] 일치하지 않습니다.
찾다:
오류 검사 참조 :
이 Q & A를 방문하고 있고 mysql_을 사용하여 (와 쿼리 할 때) MySQL API가 섞이지 않는다는 점에 유의하십시오.
이에 대해 다음을 참조하십시오.
mysql_ API를 사용하고 있고 그것을 사용할 선택이 없다면, 스택에 관한 다음 Q & A를 참고하십시오 :
mysql_ * 함수는 더 이상 사용되지 않으며 향후 PHP 릴리스에서 제거 될 예정입니다.
UNIQUE 제약 조건을 (a) 행에 추가 할 수도 있습니다.
참고 문헌 :
-
==============================
2.
당신은 당신의 쿼리를 실행하고 쿼리를 $ 이메일에 추가해야한다. 문자열이다. is_resource ($ query) $ 쿼리를 제거하면 문자열이되고 $ 결과는 리소스가된다.
$query = "SELECT `email` FROM `tblUser` WHERE `email` = '$email'"; $result = mysqli_query($link,$query); //$link is the connection if(mysqli_num_rows($result) > 0 ){....}
최신 정보
귀하의 편집에 자료를 변경하십시오 :
if(is_resource($query) && mysqli_num_rows($query) > 0 ){ $query = mysqli_fetch_assoc($query); echo $email . " email exists " . $query["email"] . "\n";
으로
if(is_resource($result) && mysqli_num_rows($result) == 1 ){ $row = mysqli_fetch_assoc($result); echo $email . " email exists " . $row["email"] . "\n";
너 괜찮을거야.
업데이트 2
더 나은 방법은 매개 변수로 전자 메일을 전달하는 다음 SQL을 실행하는 저장 프로 시저가 있어야합니다.
SELECT IF( EXISTS ( SELECT * FROM `Table` WHERE `email` = @Email) , 1, 0) as `Exist`
그리고 PHP에서 값을 검색
Pseudocodigo :
$query = Call MYSQL_SP($EMAIL); $result = mysqli_query($conn,$query); $row = mysqli_fetch_array($result) $exist = ($row['Exist']==1)? 'the email exist' : 'the email doesnt exist';
-
==============================
3.
유효성 검사 후 INSERT 전에 username이 이미 있는지 검사하고 mysqli (절차 적)를 사용합니다. 작동 방식 :
//check if username already exists include 'phpscript/connect.php'; //connect to your database $sql = "SELECT username FROM users WHERE username = '$username'"; $result = $conn->query($sql); if($result->num_rows > 0) { $usernameErr = "username already taken"; //takes'em back to form } else { // go on to INSERT new record
from https://stackoverflow.com/questions/22252904/check-if-row-exists-with-mysql by cc-by-sa and MIT lisence
'PHP' 카테고리의 다른 글
최대 업로드 파일 크기 변경 (0) | 2018.09.01 |
---|---|
PHP에서 두 문자열을 결합하는 방법은 무엇입니까? (0) | 2018.09.01 |
PHP로 URL 재 작성 (0) | 2018.09.01 |
PHP의 죽음의 흰색 화면 (0) | 2018.09.01 |
배열을 IN () 조건에 바인딩 할 수 있습니까? (0) | 2018.09.01 |