一步一步来:首先,我连接数据库:if (@mysql_select_db($config[db_name])) echo "数据库操作成功!"; 成功输出echo;然后,我输出SQL语句db::mysql("select","vote","","","vote_name = ".$this->vote_name);下面是db类的一个函数的一部分:
mysql(){if ($type == "SELECT") {
$sql = "SELECT * ".$fields." from ".$table_name." where ".$where;………………echo $sql
}参数传递没有问题,成功执行:echo $sql;再接着我执行SQL语句:if (mysql_query($sql)) echo "查询成功!";成功执行echo "查询成功";$rs = mysql_query($sql);为检查查询记录是否为空,我执行mysql_num_rows($rs),返回记录条数为1,说明查询结果里面却是有一条记录;最后,我输出记录的字段:$rs[vote_name]。问题出来了,什么内容也没有输出~无论我输出那个字段·!数据库字段名没有出错~已经反复检查!使用mysql_query_array()输出也没用;还有这个语句: $sql = "SELECT * ".$fields." from ".$table_name." where ".$where;当我传递给$where参数的值是字符串时,我必须这样书写" '这是传递给$where的值' ",双引号里面还有加一个单引号,否则会查询失败!
mysql(){if ($type == "SELECT") {
$sql = "SELECT * ".$fields." from ".$table_name." where ".$where;………………echo $sql
}参数传递没有问题,成功执行:echo $sql;再接着我执行SQL语句:if (mysql_query($sql)) echo "查询成功!";成功执行echo "查询成功";$rs = mysql_query($sql);为检查查询记录是否为空,我执行mysql_num_rows($rs),返回记录条数为1,说明查询结果里面却是有一条记录;最后,我输出记录的字段:$rs[vote_name]。问题出来了,什么内容也没有输出~无论我输出那个字段·!数据库字段名没有出错~已经反复检查!使用mysql_query_array()输出也没用;还有这个语句: $sql = "SELECT * ".$fields." from ".$table_name." where ".$where;当我传递给$where参数的值是字符串时,我必须这样书写" '这是传递给$where的值' ",双引号里面还有加一个单引号,否则会查询失败!
{
print_r($row);//这样才会输出
}
找你的方法做了,和使用mysql_query_array()一样,错误信息是:
Warning: mysql_fetch_assoc() expects parameter 1 to be resource参数有误?可是查询的记过确实是有一条记录啊~
mysql(){if ($type == "SELECT") {
$sql = "SELECT * ".$fields." from ".$table_name." where ".$where;………………echo $sql
}参数传递没有问题,成功执行:echo $sql;
==================================================================db::mysql有没有返回这句sql语句?你打印只是测试吧?返回要赋值,或者在里面设置全局变量,不过意思一样
嗯,这个类函数没有问题的,使用return返回了值。关于第一个问题我已经解决了,第二个问题还没有解决:还有这个语句: $sql = "SELECT * ".$fields." from ".$table_name." where ".$where;当我传递给$where参数的值是字符串时,我必须这样书写" '这是传递给$where的值' "(如:"'第一个投票项目'"),双引号里面还有加一个单引号,否则会查询失败!
Warning: mysql_fetch_assoc() expects parameter 1 to be resource
警告:mysql_fetch_assoc()预计参数1是资源
Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\vote\test.php on line 13
这句话的中文意思我也能看懂。可是问题是,我操作的步骤不知道哪里出问题了导致有这个错误信息~~按照大家的意思,修改后的代码是这样的:class vote{
function split_selections($vote_name){ $rs = db::mysql("select","vote","","","vote_name= '".$vote_name."'");
return $rs;
}
}db类的mysql函数:function mysql($type,$table_name,$fields="",$values="",$where=""){
mysql_query("SET NAMES GBK");
$type = strtoupper($type);
if ($type == "SELECT") {$sql = "SELECT * ".$fields." from ".$table_name." where ".$where;
}
echo $sql."<br>";
$q = mysql_query($sql);
return $q;
}
test.php文件内容:include("conn.php");$vote = new vote();$rs=$vote->split_selections("第一个投票项目");while($row = mysql_fetch_array($rs)){
echo $row[vote_name]."<br>";
echo $row[vote_counts];
}