我正在尝试在我的网站上创建搜索栏以搜索用户名。在我的数据库上使用mysql时,代码工作正常,但是当我在我的网站上使用它时结果不一样或根本不起作用。不确定是否有设置我不见了。任何帮助都会很棒。
在mysql数据库中,这可行。
SELECT *
FROM `users`
WHERE username LIKE '%neva%'
这将返回名为Nevada的用户。
在我的网站上,这不起作用。
$friendquery = "neva"
if(isset($_GET['friendquery']){
$friendquery = preg_replace("/[^0-9a-zA-Z ]/", "", $_GET['friendquery']);
$sql = "SELECT * FROM users WHERE username LIKE '%$friendquery%'";
$query = mysqli_query($db_connect, $sql);
$u = $row["username"];
echo $u;
}
这不会返回任何内容。是的,我已连接到数据库。
奇怪的是,有些名字有效,有些则没有。就像我说的任何帮助都会很棒。
答案 0 :(得分:2)
您的php
条件存在错误,因此控件根本不会转到SQL
这是错误:
(isset($_GET['friendquery'])
你需要额外的关闭括号=> )
所以condition
应该是:
if(isset($_GET['friendquery']))
/* notice extra closing ^^ braces */
另外
$friendquery = "neva"
if(isset($_GET['friendquery']))
^^如果你没有从url中获取friendquery
,这个条件总是会失败的....所以,如果你想在与$friendquery = "neva"
的关系中执行它,那么,使用
if($friendquery != "")
最后:
$row = mysqli_fetch_array($query)
您的代码中也缺少。
所以最终代码应该是:
if(isset($_GET['friendquery'])){ /* close extra brackets*/
$friendquery = preg_replace("/[^0-9a-zA-Z ]/", "", $_GET['friendquery']);
$sql = "SELECT * FROM users WHERE username LIKE '%$friendquery%'";
$query = mysqli_query($db_connect, $sql);
$row = mysqli_fetch_array($query) /* fetch array */
$u = $row["username"];
echo $u;
}
答案 1 :(得分:0)
我想你错过了$row
。试试这段代码
if(isset($_GET['friendquery'])){
$friendquery = preg_replace("/[^0-9a-zA-Z ]/", "", $_GET['friendquery']);
$sql = "SELECT * FROM users WHERE username LIKE '%$friendquery%'";
$query = mysqli_query($db_connect, $sql);
if(mysqli_num_rows($query) > 0)
{
while($row = mysqli_fetch_array($query))
{
$u = $row["username"];
echo $u;
}
}
}
答案 2 :(得分:0)
您的代码有两个问题:
小错字,主要含义:您在)
声明
if
)
您的mysqli_query
结果需要先获取才能使用。我们使用为每个匹配行运行的循环。
所以你的PHP将是:
$friendquery = "neva"
if(isset($_GET['friendquery'])){ // typo: missing a closing parenthesis
$friendquery = preg_replace("/[^0-9a-zA-Z ]/", "", $_GET['friendquery']);
$sql = "SELECT * FROM users WHERE username LIKE '%$friendquery%'";
$query = mysqli_query($db_connect, $sql); // run the mysql query
while($row = mysqli_fetch_array($query)){ // actually get each query results and
// put them in $row
$u = $row["username"]; // use them!
echo $u;
}