为什么我没有接收到 php 的数据?未定义的索引


Why im not receiving data to php? Undefined index

我正在尝试通过ajax从我的phonegap应用程序发送到php,然后用我的sql db检查该值。现在,由于存在未定义的索引gli2,php文件甚至不会接收或发送数据到我的sql db,但它会给我结果"你可以吃"。有人可以帮助我吗?

这是我的 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:

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

这是错误的语法:

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()以对其进行清理。

查询 ${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");