douluozhan4370 2014-08-09 00:20
浏览 38
已采纳

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

To put it simply, I'm trying to search an entire row for a 5 digit number that is parsed in via the URL.

This is the code I have so far:

$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;
    }
}

This code partly works, but only outputs "Code valid!" when the first value from the database (12345) is parsed in.

I've seen the mysql LIKE clause mentioned a few times here, but I haven't been able to get it to work so far. I'm still pretty amateur, so apologies if I'm completely missing something.

  • 写回答

2条回答 默认 最新

  • duanke3985 2014-08-09 00:27
    关注

    To get this to work with like you would use something close to below. The % is used as a wildcard to match anything on either side of the query.

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

    Or from your code

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

    But direct input into your sql without sanitation is bad practice. Below is a better option, but using PDO would be the best.

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

    To check if code is valid you would change your while statement to the following

    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条)

报告相同问题?