1

我正在尝试运行查询以检查输入到文本字段中的内容是否与存储在数据库中的内容相匹配。

当前代码:

</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>

但是,在单击 discountSubmit 时,var_dump 返回 NULL,因此我会认为 $codeCheck 是错误的,但它看起来对我来说是正确的。

我通过另一个页面通过数据库连接,所以问题不在那里

数据库结构:

id        code       discount      expire

1         WEB10       10.00      2013-06-01

Expire 目前不相关。

4

2 回答 2

2

这里,代码不是整数值。因此,用单引号将其括起来。您还应该在使用语句时包含$conn(连接变量) - mysqli_query()mysqli_query()

$codeCheck = mysqli_query($conn, "SELECT code FROM discount WHERE code = '$discountCode'");

[编辑]如果您在此页面中包含连接页面,请尝试执行以下操作:

连接.php

function connect(){
   $conn = mysqli_connect($host, $un, $pw, $db);
   return $conn;
}

现在,从当前页面调用此函数并获取连接变量:

$conn = connect();

现在,$conn用于mysqli_query()函数。


更改 if 条件如下:

if(isset($_POST['discount']))
于 2013-06-17T16:36:21.483 回答
0
  1. 您不应该将 SQL 与 HTML 混合使用
  2. 你不应该在没有先阅读它的手册页的情况下使用一个函数
  3. 您不应该将裸 API 与 mysqli 一起使用,而应使用一些抽象库。

一个更好的代码版本,由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); ?>
于 2013-06-17T16:43:46.350 回答