我有一个PHP脚本,允许基于登录系统进行投票。
我正在尝试将所有代码切换到PDO而不是MySQL。我在切换这段特殊代码时遇到了麻烦。这是原始的:
$get_votes = mysql_query("SELECT * FROM votes WHERE poll_id = 1 "); //select all votes to this poll
$votes = array(); //the array that will be containing all votes
$total_votes = 0;
while($vote = mysql_fetch_assoc($get_votes)) { //retrieve them
$answer_id = $vote['answer_id'];
$votes[$answer_id] = (int)$votes[$answer_id]+1; //add 1 vote for this particular answer
$total_votes++;
}
$get_answers = mysql_query("SELECT * FROM answers WHERE poll_id = 1 ");
while($answer = mysql_fetch_assoc($get_answers)) { //loop through all answers
$id = $answer['id'];
$width = round((int)$votes[$id]/$total_votes*99+1); //100%
echo ' This Answer has ('.(int)$votes[$id].' vote'.((int)$votes[$id] != 1 ? "s":"").')
';
}
我想要保留的是$width
和投票数$votes[$id]
。无论是从一个数组计算全部,还是计算单个答案结果,我是否提供了答案变量。
我在这里处于松散状态,我很快就会留下头发,所以如果有任何建议/批评会有所帮助,欢迎提出任何建议/批评。
答案 0 :(得分:0)
$q = 'SELECT * FROM votes WHERE poll_id = :poll_id';
$params = array(':poll_id' => 1);
$stmt = $db->prepare($q);
$stmt->execute($params);
while ($row = $stmt->fetch()) {
将基本的查询/结果转换为PDO(这只是在PDO中执行此操作的一种方式)。你究竟遇到了什么问题? PHP站点上的PDO文档非常强大,有很多示例。
你有什么尝试?什么不起作用?你得到了什么意外的行为或错误?在得到任何真正的答案之前,需要更多关于实际问题的信息。
- 从评论编辑 -
您的原始代码应该可以正常使用
while ($row = $stmt->fetch()) {
$answer_id = $row['answer_id'];
}
应该仍然有用,你可以从那里去。