2016-08-01 9 views
-1

2 개의 입력란 인 'person.tag_name'과 'person.created_by'가 있습니다.이 사람은 .js에서 .php로 'person'을 게시합니다.PHP SQL이 결과를 표시하지 않습니다.

문제는 입력 상자에 데이터가 표시 될 때만 입력 상자가 필요하다는 것입니다.하지만 SQL 문에서는 createdBy와 일치하며 tag_name은 전혀 사용되지 않습니다. 요약

: 1 ~ 2의 입력 상자가 수비에 경우

  • 내가받은되지 않습니다 데이터입니다.
  • 2/2 입력 상자가 필드화된 경우에만 데이터를 수신합니다.
  • $tagName = $request->tag_name;을 제거 시도하고 데이터

PHP 코드 반환합니다

$postdata = file_get_contents("php://input"); 
$request = json_decode($postdata);  
$createdBy = $request->created_by; 
$tagName = $request->tag_name; 

if (!empty($createdBy) && !empty($tagName)){ 
    $Where = "created_by LIKE '%$createdBy%' AND name LIKE '%$tagName%'"; 
}  
else if (!empty($createdBy)){ 
    $Where = "created_by LIKE '%$createdBy%'"; 
}  
else if (!empty($createdBy)){ 
    $Where = "name LIKE '%$tagName%'"; 
} 



// Create connection 
$con = new mysqli($servername, $username, $password, $db); 

// Check connection 
if ($con->connect_error) { 
    die("Connection failed: " . $conn->connect_error); 
} 

$sql = "SELECT * FROM test.test_tag WHERE deleted_by is null AND $Where;" ; 

$qry = $con ->query($sql); 

$data = array(); 

if ($qry->num_rows > 0) { 
    // output data of each row 
    while($row = $qry->fetch_object()) { 
     $data[] = $row; 
    } 
} else { 
    $data[] = null; 
} 

$con->close(); 

도와주세요.

+2

이 코드에서 SQL 쿼리를 실행하지 않습니다. 어느 쪽도 당신을 울리고 있지 않습니다. –

+0

SQL 연결을 생성하고 사용해야합니다 ... http://www.w3schools.com/php/func_mysqli_query.asp –

+0

그런 쿼리를 작성하면 SQL 주입 공격이 가능합니다. –

답변

0

처럼 역 따옴표에서 그것을 포장하기 위해 최선을한다면 나는 조건이 그것에 $tagName을 할당하기 전에 $request->tag_name가 존재 확인하는 경우를 포함하여 문제를 해결하는 방법을 발견했습니다.

그러나이 조건없이 데이터를 검색 할 수없는 이유는 모르겠지만 코드를 확인하면 여전히 올바른 문으로 SQL을 계속 실행합니다.

if (!empty($request->created_by)){ 
    $createdBy = $request->created_by; 
} 

if (!empty($request->tag_name)){ 
    $tagName = $request->tag_name; 
} 

모든 답장을 보내 주셔서 감사합니다.

0

데이터는 쿼리

$sql = "SELECT * 
     FROM piwik.piwik_tag 
     WHERE deleted_by is null 
      AND created_by LIKE '%$createdBy%';"; 

그것의 유일한 CREATED_BY이 (가) 작성한 있으며, 쿼리에는 TAG_NAME이 없을을 확인하시기 바랍니다

경우 유, 데이터베이스에서 의미가 나타납니다.

그래서 여기가 유일 CREATED_BY이 (가) 작성한이

+0

실제로 "Nicker"는 분명하지 않지만 질문을 해결하도록하십시오. –

+0

안녕하세요, 고마워, 그래,하지만 내 포인트가 아니야, 내 요점은 내 검색어에 내가 심지어 tag_name을 사용하지 않는거야,하지만 왜 데이터를 검색하는 tag_name 입력 상자에 입력해야합니까. – nicker

+0

위대한, 그래서 당신은 데이터가 created_by 내가 왜 tag_name 필요로 검색되는지 의미합니다. 어떤 문제도 tag_name을 게시하지 않습니다. –

-2

name, 당신은 열 이름으로 사용해서는 안 MYSQL 키워드입니다 데이터베이스에서 데이터를 가져 오기 위해 필요했다.

`name` LIKE '%$tagName%' 
+0

을 기쁘게한다면'name'은 키워드이지만 예약어는 아닙니다. 그 옆에'(R)'이 없습니다. http://dev.mysql.com/doc/refman/5.7/en/keywords.html – Barmar

+0

바보 같은 빌리 저요. – RiggsFolly

관련 문제