在这里,在第一部分中,我用你的答案的第一个块(两行)替换了我的<a href>
部分。请参阅以下代码:
//-query the database table
$sql="SELECT * FROM Hashtags";
//-run the query against the mysql query function
$result=mysql_query($sql);
//-create while loop and loop through result set
while($row=mysql_fetch_array($result)){
//-display the result of the array
$query_string = 'hashtag=true&tag='.urlencode($row['Hashtag']);
echo '<a href="index.php?'.htmlentities($query_string).'" title="Suche nach '.$row['Hashtag'].'">#'.$row['Hashtag'].'</a>';
然后,我在我的hashtags函数开始后立即添加了你的答案的第二个块。我将if语句包装在整个函数中,直到while-part结束。见下文:
function hashtags() {
$tag = isset($_GET['tag'])? urldecode($_GET['tag']) : false ;
if($tag) {
$mysqli = new mysqli('host', 'user', 'pass', 'db');
$stmt = $mysqli->prepare("select * from table where name like CONCAT('%', ?, '%')");
$stmt->bind_param('s', $tag);
$stmt->execute();
//-run the query against the mysql query function
$result=mysql_query($sql);
//-create while loop and loop through result set
while($row=mysql_fetch_array($result)){
//-display the result of the array
echo '...'
//end of while & if
while循环是否也必须调整为mysqli? 也许这些信息可以提供帮助:在我的浏览器中,URL看起来正确:&#34; index.php?hashtag = true&amp; tag = ...&#34;
当我点击<a href>
时,我得到一个空屏幕。
再次感谢您的帮助,抱歉打扰您!
答案 0 :(得分:2)
您应该只将哈希标记提供为包含$row['hashtag']
$query_string = 'hashtag=true&tag='.urlencocde($row['hashtag']);
echo '<a href="index.php?'.htmlentities($query_string).'" title="Suche nach '.$row['Hashtag'].'">#'.$row['Hashtag'].'</a>';
然后在你的函数hashtags中,你可以像这样获取标记值:
$tag = isset($_GET['tag'])? urldecode($_GET['tag']) : false ;
if($tag):
此外,您需要move away from mysql并确保自己免受SQL注入。我们可以通过迁移到mysqli
库并使用prepared
语句来完成所有这些操作。
$mysqli = new mysqli('host', 'user', 'pass', 'db');
$stmt = $mysqli->prepare("select * from table where name like CONCAT('%', ?, '%')");
$stmt->bind_param('s', $tag);
$stmt->execute();
while($row = $stmt->fetch_assoc()){
//echo stuff
}
您需要concat
LIKE
,否则您将收到错误。
<强>资源强>