我正在尝试运行一个查询,以检查输入到文本字段中的内容是否与存储在数据库中的内容相匹配。
当前代码:
</form>
<br />
<h2>Discount Code</h2>
<br />
<form method="POST" action=''>
<input type="text" name="discount" />
<input type="submit" name="discountSubmit" value="Apply" />
<?php
if(isset($_POST['discountSubmit'])){
$discountCode = $_POST['discount'];
$codeCheck = mysqli_query("SELECT code FROM discount WHERE code = $discountCode");
var_dump($codeCheck);
}
?>
</form>
然而,在点击折扣提交var_dump返回NULL,所以它会导致我假设$codeCheck是错误的,但它看起来对我来说是正确的。
我通过另一个页面连接数据库,所以问题不在那里
数据库结构:
id code discount expire
1 WEB10 10.00 2013-06-01
Expire暂时不相关
这里,code不是整数值。因此,用单引号括起来。在使用mysqli_query()
语句时,还应该包括$conn
(连接变量)—mysqli_query()
$codeCheck = mysqli_query($conn, "SELECT code FROM discount WHERE code = '$discountCode'");
[编辑]如果要在此页面中包含连接页面,请尝试执行以下操作:
connect.php
function connect(){
$conn = mysqli_connect($host, $un, $pw, $db);
return $conn;
}
现在,从当前页面调用该函数并获取连接变量:
$conn = connect();
现在,mysqli_query()
函数用$conn
。
按如下方式修改if条件:
if(isset($_POST['discount']))
- 你不应该把SQL和HTML混在一起> >> >>> >
- 你不应该在mysqli中使用纯API,而应该使用一些抽象库。
为你的代码提供了一个更好的版本,由safeMysql提供,它以你期望的mysqli_query的自然方式工作,但没有得到它。
<?php
$check = NULL;
if(isset($_POST['discountSubmit']))
{
$sql = "SELECT code FROM discount WHERE code = ?i";
$check = $db->getOne($sql, $_POST['discount']);
}
?>
<h2>Discount Code</h2>
<br />
<form method="POST" action=''>
<input type="text" name="discount" />
<input type="submit" name="discountSubmit" value="Apply" />
</form>
<?php var_dump($check); ?>