php
  • sql
  • 2017-02-23 1 views 0 likes 
    0

    죄송합니다. 내 영어가 약합니다. 어떻게 db SQL에서 다중 값을 검색 할 수 있습니까? 사용자 이름과 가족은 당신이 검색 할 경우 내가이존재하는 경우 여러 값 검색

    if (isset($_POST['searchname']) || isset($_POST['searchfamily'])) { 
        $sql = "select * from myinfo WHERE name='{$_POST['searchname']}' && family='{$_POST['searchfamily']}' ORDER BY id DESC"; 
    } 
    else { 
        $sql = "select * from myinfo ORDER BY id DESC"; 
    } 
    
    +3

    코드입니다 :

    지금 나는 당신이 그러나 당신의 변수로 $mysqli를 사용하는 가정하고 있는데, 이것은 당신이 사용하는 올바른 변수에 맞게 조정해야 할 수도 있습니다 ? – Option

    +0

    '이름이 '% jones %'또는 '% jones %'와 같은 가족 인 경우 – MonkeyZeus

    +0

    [SQL Injections] (http://php.net/manual/en/security.database.sql-injection. php) 실제로 쿼리를 연결하는 대신 [Prepared Statements] (http://php.net/manual/en/mysqli.quickstart.prepared-statements.php)를 사용해야합니다. 특히 사용자 입력을 전혀 피할 수 없기 때문에 특별히 그렇습니다! –

    답변

    0

    을 쓸 수있는 방법을 제대로 을 빈 반환 결과를두고 검색 할 때 내가 & 가족 함께 이름 &를 검색 할 수 있지만 내가 원하는 모두 당신은 변경해야 너도 마찬가지야. 여기

    if (isset($_POST['searchname']) || isset($_POST['searchfamily'])) { 
        $where=""; 
        if(isset($_POST['searchname'])) 
        $where=" WHERE `name`='{$_POST['searchname']}'"; 
        if(isset($_POST['searchfamily'])) 
        { 
        if($where=="") 
         $where=" WHERE family='{$_POST['searchfamily']}'"; 
        else 
         $where=" AND family='{$_POST['searchfamily']}'"; 
        } 
        $sql = "select * from myinfo $where ORDER BY id DESC"; 
    } 
    else { 
    
        $sql = "select * from myinfo ORDER BY id DESC"; 
    
    } 
    
    +0

    중요한 한 부분을 놓쳤습니다 ;-)'name = ' – Option

    +0

    예 감사합니다. :) –

    +0

    검색 이름이나 검색 패밀리 또는 둘 모두가 원할 경우 ... 올바르게 작동 ...이 대구는 오직 나마와 가족을 함께 입력 할 때만 사용할 수 있지만 검색에만 이름이 지정됩니다. – Toprex

    0

    귀하의 3 개 주요 문제 ..

    최초의 존재를이 시도 귀하의 의견에 따라 경찰 그리고 쿼리에

    if (isset($_POST['searchname']) && isset($_POST['searchfamily'])) { 
    
    $sql = "select * from myinfo WHERE `name`='{$_POST['searchname']}' AND family='{$_POST['searchfamily']}' ORDER BY id DESC"; 
        } 
    else { 
    
    $sql = "select * from myinfo ORDER BY id DESC"; 
    
    } 
    

    편집

    and-&& 변경 WHERE name= now .. name은 이미 mysql에서 사용하고 있으므로 사용하면 안됩니다. 당신이 사용한다면 그것은 그러나 .. 그것은 다음과 같이 실행 :

    WHERE `name`= 
    

    당신은 항상 역 따옴표 데이터베이스 테이블 및 열은 장거리의 인생을 더 쉽게 만드는 것이다.

    AND

    세 번째해야 당신이 && 사용되는 두 번째 문제는 SQL 주입을위한 열려있는 당신이 바로 귀하의 요청으로 변수를 배치하지 않아야합니다. 당신이 노력이 무엇

    if (isset($_POST['searchname']) || isset($_POST['searchfamily'])) { 
    
        $searchName = $_POST['searchname']; 
        $family = $_POST['searchfamily']; 
    
        $sql = $mysqli->prepare("select * from `myinfo` WHERE `name` = ? OR `family`= ? ORDER BY `id` DESC"); 
        $sql->execute([$searchName, $family]); 
    } else { 
    
        $sql = $mysqli->prepare("select * from `myinfo` ORDER BY `id` DESC"); 
        $sql->execute(); 
    
    } 
    
    +0

    내 코드 상관 없어. 이 두 사람이 마지막 이름과 첫 번째 이름을 입력하면 이것은 사실입니다 ... – Toprex

    +0

    당신은 무엇이 잘못 되었습니까? 우리는 무엇이 잘못되었는지 지적하고 그것을 논증합니까? 왜 처음부터 요청 하는가? – Option

    +0

    검색 이름이나 검색 패밀리 또는 둘 모두가 올바른 경우 ... – Toprex

    관련 문제