2017-02-01 5 views
0

Yahallo!私は、データベース内のユーザーを検索し、それらをテキストフィールドに表示する際に問題があります。私は姓を入力して、ユーザーを照会し、検索するためのすべてを設定している誰かがそれを固定するのを助けることができるそれは私にエラー検索姓名でユーザーを検索PHP

Fatal error: Uncaught exception 'mysqli_sql_exception' with message 'You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '' at line 1' .

<?php 
 
$host = "localhost"; 
 
$user = "root"; 
 
$password =""; 
 
$database = "ntmadb"; 
 

 
$id = ""; 
 
$firstname = ""; 
 
$lastname = ""; 
 
$username = ""; 
 

 
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT); 
 

 
// connect to mysql database 
 
try{ 
 
    $connect = mysqli_connect($host, $user, $password, $database); 
 
} catch (mysqli_sql_exception $ex) { 
 
    echo 'Error'; 
 
} 
 

 
// get values from the form 
 
function getPosts() 
 
{ 
 
    $posts = array(); 
 
    $posts[0] = $_POST['id']; 
 
    $posts[1] = $_POST['firstname']; 
 
    $posts[2] = $_POST['lastname']; 
 
    $posts[3] = $_POST['username']; 
 
    return $posts; 
 
} 
 

 
// Search 
 

 
if(isset($_POST['search'])) 
 
{ 
 
    $data = getPosts(); 
 
    
 
    $search_Query = "SELECT * FROM members WHERE lastname = $data[2]"; 
 
    
 
    $search_Result = mysqli_query($connect, $search_Query); 
 
    
 
    if($search_Result) 
 
    { 
 
     if(mysqli_num_rows($search_Result)) 
 
     { 
 
      while($row = mysqli_fetch_array($search_Result)) 
 
      { 
 
       $id = $row['id']; 
 
       $firstname = $row['firstname']; 
 
       $lastname = $row['lastname']; 
 
       $username = $row['username']; 
 
      } 
 
     }else{ 
 
      echo 'No Data For This Id'; 
 
     } 
 
    }else{ 
 
     echo 'Result Error'; 
 
    } 
 
} 
 
?> 
 
<!DOCTYPE Html> 
 
<html> 
 
    <head> 
 
     <title>PHP INSERT UPDATE DELETE SEARCH</title> 
 
    </head> 
 
    <body> 
 
     <form action="index44.php" method="post"> 
 
      <input type="text" name="id" placeholder="Id" value="<?php echo $lastname;?>"><br><br> 
 
      <input type="text" name="firstname" placeholder="First Name" value="<?php echo $firstname;?>"><br><br> 
 
      <input type="text" name="lastname" placeholder="Last Name" value="<?php echo $lastname;?>"><br><br> 
 
      <input type="text" name="username" placeholder="User Name" value="<?php echo $username;?>"><br><br> 
 
      <div> 
 
       
 
       <!-- Input For Edit Values --> 
 
       <input type="submit" name="update" value="Update"> 
 
       
 
       
 
       
 
       <!-- Input For Find Values With The given ID --> 
 
       <input type="submit" name="search" value="Find"> 
 
      </div> 
 
     </form> 
 
    </body> 
 
</html>

を与えますか?ありがとうございました!

+1

(1)文字列リテラルは、引用符を必要とする - ' '$データ[2]' '、(2)二重引用符内の配列の値を中括弧に包まれなければならない - ' '{$データ[2]}' ' 、(3)あなたはSQLインジェクションに広くオープンしています - [どうやってPHPでSQLインジェクションを防ぐことができますか?](http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in- PHP) – Sean

+0

私はそれを知っていなかった、ありがとう@サン!しかしこれは単なるサンプルプロジェクトです。これは決して生きることはありません。しかし、私はそれを念頭に置いておきます。 :) –

答えて

2

は、クエリの下に試してみてください。

$search_Query = "SELECT * FROM members WHERE lastname = '".$data[2]."'"; 
+0

姓は文字列変数です。クエリ内で単一引用符で囲む必要があります – mith

+0

姓に関連付けられた他の値はテキストフィールドに表示されませんでした。 :/ –

+0

私の悪い、それはテキストフィールドのエラーでした。それは今働きます!ありがとうございます@ミス。 –

0

これを試してみてください:

$temp_lastname = $data[2]; 
$search_Query = "SELECT * FROM `members` WHERE `lastname` = '$temp_lastname'"; 
+0

私はします!ありがとうございます –