我刚看了YouTube video有关如何创建自定义数据库的信息。我试图将此实现到我的网站中。 然而,显然,它不起作用......
我收到错误'查询失败:'并且以下代码中没有其他错误。
// Connect to server and select database.
mysql_connect("$host", "$username", "$password")or die("cannot connect to database");
mysql_select_db("$db_name")or die("cannot select DB");
$con=mysqli_connect("$host","$username","$password","$db_name");
$terms = explode(" ", $search);
$query = "SELECT * FROM search WHERE ";
foreach ($terms as $each){
$i++;
if ($i == 1)
$query .= "keywords LIKE '%each%' ";
else
$query .= "OR keywords LIKE '%each%' ";
}
$query = mysql_query($query);
$numrows = mysql_num_rows($query) or die('Query failed: ' . mysql_error() . "<br />\n$sql");
if ($numrows > 0)
while($row = mysqlfetch_ASSOC($query)){
$id = $row['id'];
$title = $row['title'];
$description= $row['description'];
$keywords = $row['keywords'];
$link = $row['link'];
echo '<h2><a href="$link">$title</a><h2>
$description<br/><br/>';
}
else
echo "No results found";
//disconnect
mysql_close();
?>
说实话,我只了解其中的70%并且不知道。数据库正确连接并运行。我做错了什么???
mysql_num_rows之前导致了问题,但在WHERE''和右引号之间加了一个空格后,它就把我留在了这里。
答案 0 :(得分:1)
我不确定这是不是问题,但是,不应该这样:
$query .= "keywords LIKE '%each%' ";
改为:
$query .= "keywords LIKE '%{$each}%' ";
它将每个视为文本,而不是循环中的字符串。
(同样如下两行)
答案 1 :(得分:0)
首先....您需要包含$ each以包含变量...而不仅仅是每个......
$query .= "WHERE keywords LIKE '%{$each}%' ";
另外....移动WHERE面前的关键字,这样如果用户没有在搜索中输入任何东西......他们会查询所有内容......否则,如果他们什么都不输入,它就会破坏......
$terms = explode(" ", $search);
$query = "SELECT * FROM search ";
if(!empty($terms)){
foreach ($terms as $each){
$i++;
if ($i == 1)
$query .= "WHERE keywords LIKE '%{$each}%' ";
else
$query .= "OR keywords LIKE '%{$each}%' ";
}
}