我在我的网站上尝试包含this插件,它运行正常,但我遇到了一些PHP问题。
当我像这样编写PHP时:
$default_tags = 'Avanture, Giorgio, Armani, Depeche, Mode, Pevanje, Francuska, usluživanje, Pravo, Menadžer, prodaje, Advokat';
if (!@$_SESSION['existing_tags']) {
$_SESSION['existing_tags'] = $default_tags;
}
$existing_tags = $_SESSION['existing_tags'];
$tags = split(' ', $default_tags);
if (isset($_SERVER['HTTP_X_REQUESTED_WITH']) && @$_GET['tag']) {
$match = array();
foreach ($tags as $tag) {
if (stripos($tag, $_GET['tag']) === 0) {
$match[] = $tag;
}
}
echo json_encode($match);
}
exit;
}
它运行正常,但是当我尝试从数据库中获取结果时,我遇到了问题。
我试过了:
$query = mysql_query("SELECT * FROM tags");
while($row = mysql_fetch_array($query)) {
$default_tags = ''.$row['keyz'].', ';
if (!@$_SESSION['existing_tags']) {
$_SESSION['existing_tags'] = $default_tags;
}
$existing_tags = $_SESSION['existing_tags'];
$tags = split(' ', $default_tags);
if (isset($_SERVER['HTTP_X_REQUESTED_WITH']) && @$_GET['tag']) {
$match = array();
foreach ($tags as $tag) {
if (stripos($tag, $_GET['tag']) === 0) {
$match[] = $tag;
}
}
echo json_encode($match);
}
exit;
}
这种方法对我不起作用。此外,here是我的数据库表标签的屏幕截图。上面的代码出了什么问题?
答案 0 :(得分:1)
你的问题是你一遍又一遍地重写$ default_tags变量。 在你的while循环结束时,你所拥有的就是你最后一行用逗号结尾。
基本上你不会存储除变量中最后一行以外的任何内容。
如果您执行以下操作,您将获得类似于您尝试执行的操作:
$default_tags_arr = array();
while($row = mysql_fetch_array($query)) {
array_push($default_tags_arr, $row["keyz"]);
}
$default_tags = join(", ",$default_tags_arr);
答案 1 :(得分:0)
您应该准确描述问题所在。你收到错误信息吗?
我看到的一件事似乎是错误的是从数据库中取出:
while($row = mysql_fetch_array($query)) {
$default_tags = ''.$row['keyz'].', ';
对于您完全覆盖$default_tags
的每一行。我想也许你想说:
while($row = mysql_fetch_array($query)) //where does the curly brace closes in the original code?
$default_tags .= ''.$row['keyz'].', '; //notice the . before =
连接标签。
除此之外,我无法理解代码:
$existing_tags = $_SESSION['existing_tags'];
$tags = split(' ', $default_tags);
在这里,您要分配稍后在代码中不使用的变量$existing_tags
。您想在下一行而不是$default_tags
中使用它吗?应该做的代码是什么?