2016-04-25 10 views
0

私は私のphonegapアプリケーションからphpにajax経由で値を送信しようとしているし、私のSQLデータベースでその値を確認しています。今では定義されていないインデックスgli2があるので、phpファイルはSQLデータベースにデータを受け取ったり、送信したりすることはありませんが、結果として「あなたは食べられます」という結果が得られます。誰かが私を助けることができますか?ここなぜphpにデータを受け取っていないのですか?定義されていないインデックス

<?php 
$conn = new mysqli('localhost', 'root', '', 'test'); 
if ($conn->connect_error) { 
    die("Connection error: " . $conn->connect_error); 
} 
$gli2 = $_POST['gli2']; 

$result = $conn->query("SELECT smt FROM product WHERE smt='${gli2}' and BarCode =0"); 

$row = $result->fetch_assoc(); 
if ($row['smt'] == '0') { 
    echo '<script language="javascript">'; 
echo 'alert("You can eat")'; 
echo '</script>'; 
}else{ 
    echo '<script language="javascript">'; 
echo 'alert("You cannot eat")'; 
echo '</script>'; 
} 
?> 

そして、私のAjaxです:クエリ${gli2}

$.ajax({ 
    type: "POST", 
    url: 'http://localhost/test/testing.php', 
    data: {gli2: document.getElementById("galima1").value,}, 
     success: function() { 
    console.log('success'); 
    }, 
    dataType: 'application/json', 

}); 

答えて

1

これは間違ってここに構文です:あなたはインライン変数展開のために、使用する必要が

smt='${gli2}' 

smt='{$gli2}' 

完全なコードは、なるように:

$result = $conn->query("SELECT smt FROM product WHERE smt='{$gli2}' and BarCode=0"); 

それは読みやすく、安全性のためにバッククォートを使用することも(強制ではない)方が良いです。

$result = $conn->query("SELECT `smt` FROM `product` WHERE `smt`='{$gli2}' and `BarCode`=0"); 

{$の位置を参照してください。これは、Railsやその他のテンプレートエンジンと似ていません。また、コードはSQLインジェクション攻撃の影響を受けます。 $gli2を組み込み関数mysqli_real_escape_string()に渡してクリーニングする方が良いでしょう。

+0

訂正と説明をありがとうが、まだデータが私のPHPファイルに入っていません。私の構文すべてをチェックしようとすると、たぶん1つ以上の間違いがあります。 – dziugas009

+0

@ dziugas009 'SELECT'クエリであり、' INSERT'や 'UPDATE'クエリではないので、データはあなたのDBに入りません。あなたがしようとしていることを明確にすることができますか? –

+0

ありがとう@Pravvenクマール、あなたはinesertクエリを述べたので、私はそれを考え出しました:)今、それはうまく動作します – dziugas009

1

変数が何に評価されないが、

は、ここに私のPHPファイルです。

$の後に中括弧があるように、

変更

$result = $conn->query("SELECT smt FROM product 
WHERE smt='${gli2}' and BarCode =0"); 

$result = $conn->query("SELECT smt FROM product 
WHERE smt='{$gli2}' and BarCode =0"); 
+0

何か説明する必要があります。 –