在整个表格行中搜索五位数字?

时间:2014-08-09 00:20:39

标签: php parsing url search row

简单来说,我试图在整行搜索一个通过URL解析的5位数字。

这是我到目前为止的代码:

$code = $_GET['code'];
$connect = mysqli_connect("localhost", "root", "", "test") or die("Could not connect to    database!");

$query = mysqli_query($connect, "SELECT * FROM codes");

while($row = mysqli_fetch_array($query))
{
    if($code == $row['code'])
    {
        echo "Code valid";
        break;
    }
    else
    {
        echo "Invalid code";
        break;
    }
}

此代码部分有效,但只输出“代码有效!”当解析数据库中的第一个值(12345)时。

我已经在这里看过几次提到的mysql LIKE子句,但到目前为止我还没能让它工作。我仍然非常业余,如果我完全遗漏了某些东西,我会道歉。

2 个答案:

答案 0 :(得分:2)

要使用此功能,您可以使用接近下方的内容。 %用作通配符以匹配查询任何一侧的任何内容。

SELECT * FROM codes WHERE code LIKE '%12345%'

或者来自您的代码

$query = mysqli_query($connect, "SELECT * FROM codes WHERE code LIKE '%" . $code . "'");

但是在没有卫生设施的情况下直接输入你的sql是不好的做法。下面是一个更好的选择,但使用PDO将是最好的选择。

$query = mysqli_query($connect, "SELECT * FROM codes WHERE code LIKE '%" . mysqli_real_escape_string($code) . "'");

要检查代码是否有效,您可以将while语句更改为以下

if(mysqli_num_rows($query) > 0) {
    echo "Code Valid";

    while($row = mysqli_fetch_array($query)) {
        /* Output of codes if wanted */
    }
} else {
    echo "Invalid code";
}

答案 1 :(得分:0)

使用WHERE子句:

$code = filter_input(INPUT_GET, 'code', FILTER_SANITIZE_NUMBER_INT);
$sql = "SELECT * FROM codes WHERE code = {$code}";

使用您的代码,如果您希望显示所有结果,则只需从代码中删除break;语句;他们停止循环。