我正在尝试在我的网站上包含这个插件,它运行良好,但我在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;
}
这个方法对我不起作用。另外,这里是我的数据库表标签的截图。上面的代码出了什么问题?
您的问题是一次又一次地重写$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);
您应该准确描述问题所在。是否收到错误消息?
我看到的一件事对我来说似乎是错误的,那就是从数据库中提取:
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
吗?代码应该做什么?