简单来说,我试图在整行搜索一个通过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子句,但到目前为止我还没能让它工作。我仍然非常业余,如果我完全遗漏了某些东西,我会道歉。
答案 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;
语句;他们停止循环。