我正在尝试使用下拉菜单制作表单。然后将表单的值存储在数据库中。我希望以后能够更改表单的值,并通过返回到表单来完成这一操作,该表单填充了数据库中输入的值。
除了下拉菜单外,一切似乎都有效。因为我希望所有字段都填充正确的值,这也适用于菜单。所以,我尝试在if-else子句中使用字符串比较来确定将哪个选项设置为选中。但字符串比较不起作用。这是一个代码示例:
$query = mysql_query(SELECT * FROM data);
$result = mysql_fetch_assoc($query);
if(strcmp($result['pet'],"Dog")==0)
{
echo "
<option value='Dog' selected>Dog</option>
<option value='Cat'>Cat</option>
<option value='Bird'>Bird</option>
";
}
elseif(strcmp($result['pet'],"Cat")==0)
{
echo "
<option value='Dog'>Dog</option>
<option value='Cat' selected>Cat</option>
<option value='Bird'>Bird</option>
";
}
我也尝试过:
if(result['pet']=="Dog")
{
.....
}
elseif(result['pet']=="Cat")
{
.....
}
和
if(strcmp(trim(reuslt['pet']),trim("Dog"))==0)
{
.....
}
elseif(strcmp(trim(result['pet']),trim("Cat"))==0)
{
.....
}
但没有任何作用。我怀疑它与排序有关,所以我在选择值时尝试更改它:
$query = mysql_query("SELECT * COLLATE latin_1 FROM data");
$result = mysql_fetch_assoc($query);
这给了我错误消息“警告:mysql_fetch_assoc()期望参数1是资源,在第12行的/opt/lampp/htdocs/PHP/control.php中给出布尔”。< / p>
那么,出了什么问题,我该如何解决?
编辑: 我现在更改了一下我的查询:
$query = mysql_query("SELECT * FROM data WHERE user='$user' COLLATE uft8_general_ci") or die(mysql_error());
由此我得到以下错误:
COLLATION'utf8_general_ci'对于CHARACTER SET'latin1'无效
当我将整理更改为 latin1_general_ci 时,我将执行以下操作:
非法混合排序(utf8_swedish_ci,IMPLICIT)和(latin1_general_ci,EXPLICIT)进行操作'='
我用于数据库中列的排序规则是 utf8_swedish_ci ,如果有帮助的话。
答案 0 :(得分:1)
您收到此错误是因为mysql_query
在查询失败时返回布尔值(false),请执行以下操作以更好地解释问题
$result = mysql_query('SELECT * COLLATION latin_1 FROM data');
if (!$result) {
die('Invalid query: ' . mysql_error());
}
问题是您的查询无效 - 您应该使用COLLATE
而不是COLLATION
...请参阅以下内容以获取有关COLLATE
works的详细解释 - 基本上您使用{{1}对单个列而不是组(COLLATE
)