-2

PHPを使用してSQLサーバーからデータを取得したいのですが、SQLがphp変数を読み取っていないようです

<?php
$q = $_POST["fl"];
echo $foo;
if ($_POST["fl"] == true);
{
$conn1=odbc_connect('SQLDB','','');
if (!$conn1)
{exit("Connection Failed: " . $conn1);}

 $sql1= "SELECT * FROM dbo.Audit WHERE Details = '$q'";
 $rs1=odbc_exec($conn1,$sql1);
 if (!$rs1)
 {exit("Error in SQL");}
while (odbc_fetch_row($rs1))
4

5 に答える 5

0

それを行う最良の方法は次のとおりです。

$stmt    = odbc_prepare($conn1, "SELECT * FROM dbo.Audit WHERE Details = ?");
$success = odbc_execute($stmt, array(PDO::quote($_POST["fl"])));
于 2013-09-23T16:55:25.643 に答える
0

$q の存在を誤ってテストしています。次のようなものが必要です。

if ($_SERVER['REQUEST_METHOD'] == 'POST') {
   if (isset($_POST['fl'])) {
        $q = $_POST['fl'];
        $sql = "SELECT ... WHERE Details = '$q'":
        etc..
   } else {
       die("No fl value was passed");
   }
}

また、 SQL インジェクションの脆弱性を修正していないことにも注意してください。あなたのコードは、たとえそれが機能していたとしても、あなたのデータベースをゴミ箱に入れようとしているだけです.

于 2013-09-23T16:55:35.170 に答える
0

明らかな反対票パーティーを避けるために、私はSQLを投稿するつもりはありませんが、yadda yadda SQLインジェクション、yadda yadda入力検証など.

あなたの問題は次のとおりです。

if ($_POST["fl"] == true); //<-- this semicolon, get rid of it
{
$conn1=odbc_connect('SQLDB','','');

それを除けば、コードは構文的には問題ありませんが、代わりにを使用する必要があります。if(isset($_POST['f1']))if ($_POST["fl"] == true)

于 2013-09-23T16:55:36.123 に答える
-6

まず最初に、投稿を SQL クエリに入れる前にサニタイズしてください。htmlentities またはさらに良い PDO を使用する必要があります。

次に、現在のものが機能しない場合は、これを試すことができます。

$sql1 = "SELECT * FROM dbo.Audit WHERE Details = '".$q."'";
于 2013-09-23T16:47:13.930 に答える