我正在尝试通过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");