2017-07-05 18 views
0

HTMLフォームから値を渡してPHP変数に格納しようとしています。この変数をクエリに使用して、データベースから取得する行を決定できます。 _post ['category']を使用して選択した値を取得しています。変数をクエリに渡して目的の行を取得していますが、これまで何も得られていません。ここで私はこれまで書いたものです:HTMLフォームからPHP変数への値の受け渡し

<form method="post" action="a34.php">                  
<select name="category"> 
    <option value="6008">15</option> 
    <option value="6018">25</option> 
    <option value="6034">30</option> 
    <option value="6038">40</option> 





$V=$_POST['category']; 

$getrow= "SELECT ProdID, 
ProdCatID, ID_AC_seperate, ProdImage, 
ProdName, ProdPrice, ProdShippingPrice, 
ProdShortDesc, ProdMediumDesc, suitable, 
cart_thumb FROM accessories WHERE ProdID = '$V'"; 
+4

[リトルボビー](http://bobby-tables.com/は)[スクリプトがSQLインジェクション攻撃の危険性がある]と言う(のhttp:// /image/gif/paws/6704/how-can-i-prevent-sql-injection-in-php)。 [MySQLi](http://php.net/manual/en/mysqli.quickstart.prepared-statements.php)の[prepared](http://en.wikipedia.org/wiki/Prepared_statement)のステートメントについて学んでください。 [文字列をエスケープする](http://stackoverflow.com/questions/5741187/sql-injection-that-gets-around-mysql-real-escape-string)でも安全ではありません! - [Jay Blanchard](http://stackoverflow.com/users/1011527/jay-blanchard) –

+1

フォームを送信しますか? 1つのスクリプト内のすべてのコードですか? – Jeff

+0

@リトルボビー私は今のところ仕事をしようとしていることを知っています。助言がありますか? – user8237728

答えて

0

私はstrip_tags機能を使用することをお勧めいたします。生データをSQLに入れないでください。

ので

If(isset($_POST['category']) { 
    $data = strip_tags ($_POST['category']); 

    $getrow= "SELECT ProdID, ProdCatID, ID_AC_seperate, ProdImage, 
        ProdName, ProdPrice, ProdShippingPrice, 
        ProdShortDesc, ProdMediumDesc, suitable, cart_thumb 
       FROM accessories 
       WHERE ProdID = '. $data .'"; 
} 
+0

私はそれを使用しましたが、私はまだ同じ問題に直面しています@Bluesky – user8237728

+0

愚かな質問を使用しました: Bluesky

0

さて、次のことを試してみてください。

JSファイルは、ユーザーがオプションをクリックしたときに検出し、valの変数$_POSTを使用してupdateRow.phpファイルにajaxリクエストを送信します。

updateRow.phpは、変数をとり、整数にキャストします。クエリは、その変数で更新されます。クエリを処理し、echoprintなどのデータを目的のHTML形式で処理します。そうでなければ、データは「失敗」をエコーし​​ます。

エコーされ、印刷された出力は、変数dataでJSファイルに送り返されます。データが「失敗」に等しい場合、エラーメッセージが出力されます。それ以外の場合は、HTMLを#row要素に挿入します。

// ------ Your JS file --------- 

$(function() { 
    $row = $("#row"); 

    $("#update-row").on("change", function() { 
    var val = $("select option:selected", this).val(); 
    $.post('updateRow.php', { 
     val: val 
    }, function(data) { 
     if (data == 'failure') { 
     $row.text("Sorry, the row does not exist"); 
     } else { 
     $row.html(data); 
     } 
    }); 
    }); 
}); 
//------- updateRow.php --------- 
//Make sure path/to/updateRow.php in the JS file is updated to here 

$V = (int) $_POST['val']; 

$getrow = "SELECT ProdID, 
ProdCatID, ID_AC_seperate, ProdImage, 
ProdName, ProdPrice, ProdShippingPrice, 
ProdShortDesc, ProdMediumDesc, suitable, 
cart_thumb FROM accessories WHERE ProdID =" . $V; 

if (QUERY_IS_SUCCESSFUL()) { 
    echo 'The <b>HTML</b> you want to display the data in'; 
} else { 
    echo 'failure'; 
} 
<!----- HTML file ----> 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
<script src="path/to/js/file.js"></script> 

<form method="post" action="a34.php" id="update-row"> 
    <select name="category"> 
    <option value="6008">15</option> 
    <option value="6018">25</option> 
    <option value="6034">30</option> 
    <option value="6038">40</option> 
    </select> 
</form> 

<div id="row"></div> 
関連する問題