2016-08-01 2 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(); 

を。データは

クエリ

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

を確認してくださいそれだけでCREATED_BYを持っていた場合uは、データベースからの平均受信

+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

、クエリにはタグ名がありません。

はSO、ここでそれが唯一のCREATED_BYが

+0

実際、「ニッカー」は明確ではないので、質問をクリアしてください。 –

+0

こんにちは、ありがとう、ありがとう、これは私のポイントではない、私のポイントは私の質問にも私はtag_nameを使用していないが、なぜデータを取得するには、タグ名の入力ボックスにフィールドする必要があります。 – nicker

+0

あなたがtag_nameが必要な理由で、データがcreated_byで取り出されるかどうかはわかります。 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

関連する問題