2016-09-13 3 views
0

私は誰かがこれを手伝ってくれることを願っています。 。。:(ここでは、事前にありがとうござい

desc

私のエラーメッセージだとも、ここに私のコードです

<tr> 
       <td><label for="cname">Client Name:</label></td> 
       <td><select name="cname" id="cname"> 
         <option>Choose</option> 
         <?php 
          include("alqdb.php"); 
          $result=mysqli_query($con, "SELECT ClientName FROM events"); 
          while($row=mysqli_fetch_assoc($result)){ 
           echo "<option>".$row["ClientName"]."</option>"; 
          } 
         ?> 
         </select> 
       </td> 
      </tr> 
      <tr> 
       <td><label for="survey">Survey:</label></td> 
       <td><select name="survey" id="survey"> 
         <option>Choose</option> 
         <?php 
          include("alqdb.php"); 
          $result=mysqli_query($con, "SELECT * FROM events WHERE ClientName = '"$_POST['cname']"'"); 
          while($row=mysqli_fetch_assoc($result)){ 
           echo "<option>".$row["EventTitle"]."</option>"; 
          } 
         ?> 
         </select> 
       </td> 
      </tr> 
+0

** WARNING **を使用.net/manual/en/mysqli.quickstart.prepared-statements.php)と['bind_param'](http://php.net/manual/en/mysqli-stmt.bind-param.php)を使ってユーザデータを追加しますあなたの質問に。 **重大な[SQLインジェクションのバグ](http://bobby-tables.com/)を作成したため、文字列の補間または連結を使用してこれを実行しないでください。 ** '$ _POST'や' $ _GET'データを直接クエリに入れないでください。誰かがあなたのミスを悪用しようとすると、非常に危険です。 – tadman

答えて

2

あなたはconcatenateに適切に文字列必要があります。

$result=mysqli_query($con, "SELECT * FROM events WHERE ClientName = '".$_POST['cname']."'"); 

注意を変数のいずれかの側のピリオド。または、かっこ付きでインラインで入れることができます。

$result=mysqli_query($con, "SELECT * FROM events WHERE ClientName = '{$_POST['cname']}'"); 

いずれにせよ、あなたはSQLインジェクションのために広く開いています。準備された声明を調べると、このような問題は生じません。

+0

私を助けてくれてありがとう。あなたの2つのコードにエラーがあります。注意:未定義のインデックス:cnameのCname:\ wamp \ www \ capstoneproject \ alqbilling.php 86行目 –

+0

その後、 'cname'を' POST'に正しく渡していません。クエリが実行される前に値が存在することを確認してください。 – aynber

+0

オハイオ州。それは私の考えでもあります。私の最初のドロップダウンは価値がないと思う。それについて私を助けてくれますか? :) –

-1

はこのお試しください:

... "SELECT * FROM events WHERE ClientName = '" . $_POST['cname'] . "'" 

をしかし、あなたのコードは、SQLインジェクションを可能にすることに注意してください! SQL Injection

1

使用PDOと安全のために書類を作成: あなたの投稿は

はご覧ください...前にエスケープする必要があります。 また、データベースを2回組み込んでいるので、1度だけ含める必要があります。

これに日付ベースファイルを変更します。あなたは[パラメータ化クエリ]を使用する必要がありmysqli` `使用します(http:// PHPあなたが安全にあなたのデータベースを使用する場合

try { 
    $db = new PDO("mysql:host=localhost;dbname=second;port=8889","root","root"); 
    $db->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION); 
    $db->exec("SET NAMES 'utf8'"); 
} catch (Exception $e){ 
    echo 'Could not connect to the database.'; 
    exit(); 
} 

次に、この

$foo = trim(htmlspecialchars($_POST['cname']));//depending on where your information comes from, you might want to use htmlspecialchars 

try{ 
    $results = $db->prepare("SELECT * FROM events WHERE ClientName = ?"); 
    $results->bindParam(1,$foo);// you can also use bindValue here if you intend to use a for loop 
    $results->execute(); 
    $hold = $results->fetchAll(PDO::FETCH_ASSOC); 
} catch (Exception $e) { 
    echo "Data could not be retrieved from the database."; 
    exit(); 
} 
foreach($hold as $value){ 
    echo $value['ClientName']; 
} 
関連する問題