我有一个脚本statistics.php
<?php
header('Content-Type: text/html; charset=utf-8');
//Параметры для соединения с БД
define('DB_SERVER', 'localhost');
define('DB_USERNAME','administrator');
define('DB_PASSWORD', '<remove>');
define('DB_DATABASE', 'medpalata74');
//Подключение класса для соединения к БД
require_once 'database_class.php';
//Соединение с БД
Database::Connect(DB_SERVER, DB_USERNAME, DB_PASSWORD, DB_DATABASE);
$citiesArray = array('Челябинск', 'Аша', 'Бакал', 'Верхний Уфалей', 'Еманжелинск', 'Златоуст', 'Карабаш', 'Карталы', 'Касли', 'Катав-Ивановск', 'Коркино', 'Куса', 'Кыштым', 'Магнитогорск', 'Миасс', 'Миньяр', 'Нязепетровск', 'Сатка', 'Сим', 'Снежинск', 'Трехгорный', 'Троицк', 'Усть-Катав', 'Чебаркуль', 'Южноуральск', 'Юрюзань');
$table = "Participants";
$rows = '*';
$output = '['.'<br />';
for ($i=0; $i < sizeof($citiesArray); $i++) {
$where = "lpu like '%".$citiesArray[$i]."%'";
Database::setEncoding();
$selectResult = Database::Select($table, $rows, $where);
if($i<sizeof($citiesArray)-1){
$line = '{"city":"'.$citiesArray[$i].'","percentage":"'.sizeof($selectResult).'"},'.'<br />';
}
else{
$line = '{"city":"'.$citiesArray[$i].'","percentage":"'.sizeof($selectResult).'"}'.'<br />';
}
$output .= $line;
$selectResult ="";
}
$output .= ']';
echo $output;
// Закрываем соединение с базой данных
Database::Close();
?>
这个脚本对每个城市进行查询,结果我得到了mysql中的结果行数(现在),然后脚本生成输出,如
[
{"city":"Челябинск","percentage":"0"},
{"city":"Аша","percentage":"0"},
{"city":"Бакал","percentage":"0"},
{"city":"Верхний Уфалей","percentage":"0"},
{"city":"Еманжелинск","percentage":"0"},
{"city":"Златоуст","percentage":"0"},
{"city":"Карабаш","percentage":"0"},
{"city":"Карталы","percentage":"0"},
{"city":"Касли","percentage":"0"},
{"city":"Катав-Ивановск","percentage":"0"},
{"city":"Коркино","percentage":"0"},
{"city":"Куса","percentage":"0"},
{"city":"Кыштым","percentage":"0"},
{"city":"Магнитогорск","percentage":"0"},
{"city":"Миасс","percentage":"2"},
{"city":"Миньяр","percentage":"3"},
{"city":"Нязепетровск","percentage":"3"},
{"city":"Сатка","percentage":"3"},
{"city":"Сим","percentage":"3"},
{"city":"Снежинск","percentage":"3"},
{"city":"Трехгорный","percentage":"3"},
{"city":"Троицк","percentage":"3"},
{"city":"Усть-Катав","percentage":"3"},
{"city":"Чебаркуль","percentage":"3"},
{"city":"Южноуральск","percentage":"3"},
{"city":"Юрюзань","percentage":"3"}
]
问题是:
database_class.php
<?php
//Класс для соединения с ДБ
class Database{
public static $connectDB;//результат соединения со средой
public static $selectDB;//результат выбора БД
public static $numResults;
public static $res;
public static $ins;
public static $del;
//Метод для соединения с БД
public static function Connect($host, $user, $pass, $name){
//Попытка соединения с БД
self::$connectDB = mysql_connect($host, $user, $pass);
if(!self::$connectDB){
echo "Подключение к серверу БД не удалось. Ошибка: '".mysql_error()."'";
exit();
return false;
}
//Выбор нужной БД
self::$selectDB = mysql_select_db($name, self::$connectDB);
if(!self::$selectDB){
echo "Не удалось выбрать требуемую БД. Ошибка: '".mysql_error()."'";
exit();
return false;
}
//Возвращение результата
return self::$connectDB;
}
//Метод для выбоа данных из таблицы
public static function Select($tableName, $rows='*', $where = null){
$q = 'select '.$rows.' from ' .$tableName;
if ($where != null){
$q .= ' where '.$where;
}
//echo $q.'<br />';
$query = mysql_query($q);
$res = array();
if($query){
self::$numResults = mysql_num_rows($query);
for($i=0; $i<self::$numResults; $i++){
self::$res[]= mysql_fetch_array($query, MYSQL_NUM);
}
//echo "ok";
return self::$res;
}
else{
echo "Ошибка: '".mysql_error()."'";
return false;
}
}
//Метод для добавления записи в таблицу
public static function Insert($tableName, $values, $rows = null){
$insert = 'insert into '.$tableName;
if ($rows != null) {
$insert .= ' ('.$rows.')';
}
$insert .= ' values ('.$values.')';
$ins = mysql_query($insert);
//echo $insert;
if($ins){
//echo "ok";
return true;
}
else{
echo "Ошибка: '".mysql_error()."'";
return false;
}
}
// Метод для удаления записи из таблицы
public static function Delete($tableName, $where = null){
if($where == null){
$delete = 'delete '.$tableName;
}
else{
$delete = 'delete from '.$tableName.' where '.$where;
}
//echo $delete;
$del = mysql_query($delete);
if ($del) {
echo "ok";
return true;
}
else{
echo "Ошибка: '".mysql_error()."'";
return false;
}
}
//Метод для обновления записи в таблице
public static function Update($tableName, $set, $where = null){
if($where == null){
$update = 'update '.$tableName.' set '.$set;
}
else{
$update = 'update '.$tableName.' set '.$set.' where '.$where;
}
//echo $update;
$upd = mysql_query($update);
if ($upd){
return true;
}
else{
echo "Ошибка: '".mysql_error()."'";
return false;
}
}
//Метод для закрытия соединения с БД
public static function Close(){
return mysql_close(self::$connectDB);
}
//Метод для установки кодировки
public static function setEncoding(){
$encoding = 'SET NAMES utf8';
$enc = mysql_query($encoding);
if ($enc){
return true;
}
else{
echo "Ошибка: '".mysql_error()."'";
return false;
}
}
}
?>
什么可能导致这个错误?
答案 0 :(得分:2)
试试这段代码:
<?php
header('Content-Type: text/html; charset=utf-8');
//Параметры для соединения с БД
define('DB_SERVER', 'localhost');
define('DB_USERNAME','administrator');
define('DB_PASSWORD', '<removed>');
define('DB_DATABASE', 'medpalata74');
//Подключение класса для соединения к БД
require_once 'database_class.php';
//Соединение с БД
Database::Connect(DB_SERVER, DB_USERNAME, DB_PASSWORD, DB_DATABASE);
$citiesArray = array('Челябинск', 'Аша', 'Бакал', 'Верхний Уфалей', 'Еманжелинск', 'Златоуст', 'Карабаш', 'Карталы', 'Касли', 'Катав-Ивановск', 'Коркино', 'Куса', 'Кыштым', 'Магнитогорск', 'Миасс', 'Миньяр', 'Нязепетровск', 'Сатка', 'Сим', 'Снежинск', 'Трехгорный', 'Троицк', 'Усть-Катав', 'Чебаркуль', 'Южноуральск', 'Юрюзань');
$table = "Participants";
$rows = '*';
$output = '['.'<br />';
Database::setEncoding();
for ($i=0; $i < sizeof($citiesArray); $i++) {
$where = "lpu like '%".$citiesArray[$i]."%'";
Database::setEncoding();
$selectResult = Database::Select($table, $rows, $where);
$numRows=Database::numRows();
if($i<sizeof($citiesArray)-1){
$line = '{"city":"'.$citiesArray[$i].'","percentage":"'.$numRows.'"},'.'<br />';
}
else{
$line = '{"city":"'.$citiesArray[$i].'","percentage":"'.$numRows.'"}'.'<br />';
}
$output .= $line;
$selectResult ="";
unset($selectResult);
}
$output .= ']';
echo $output;
// Закрываем соединение с базой данных
Database::Close();
?>
使用此课程:
<?php
//Класс для соединения с ДБ
class Database{
public static $connectDB;//результат соединения со средой
public static $selectDB;//результат выбора БД
public static $numResults;
public static $res;
public static $ins;
public static $del;
public static function numRows(){
return self::$numResults;
}
//Метод для соединения с БД
public static function Connect($host, $user, $pass, $name){
//Попытка соединения с БД
self::$connectDB = mysql_connect($host, $user, $pass);
if(!self::$connectDB){
echo "Подключение к серверу БД не удалось. Ошибка: '".mysql_error()."'";
exit();
return false;
}
//Выбор нужной БД
self::$selectDB = mysql_select_db($name, self::$connectDB);
if(!self::$selectDB){
echo "Не удалось выбрать требуемую БД. Ошибка: '".mysql_error()."'";
exit();
return false;
}
//Возвращение результата
return self::$connectDB;
}
//Метод для выбоа данных из таблицы
public static function Select($tableName, $rows='*', $where = null){
$q = 'select '.$rows.' from ' .$tableName;
if ($where != null){
$q .= ' where '.$where;
}
//echo $q.'<br />';
$query = mysql_query($q);
$res = array();
if($query){
self::$numResults = mysql_num_rows($query);
for($i=0; $i<self::$numResults; $i++){
self::$res[]= mysql_fetch_array($query, MYSQL_NUM);
}
//echo "ok";
return self::$res;
}
else{
echo "Ошибка: '".mysql_error()."'";
return false;
}
}
//Метод для добавления записи в таблицу
public static function Insert($tableName, $values, $rows = null){
$insert = 'insert into '.$tableName;
if ($rows != null) {
$insert .= ' ('.$rows.')';
}
$insert .= ' values ('.$values.')';
$ins = mysql_query($insert);
//echo $insert;
if($ins){
//echo "ok";
return true;
}
else{
echo "Ошибка: '".mysql_error()."'";
return false;
}
}
// Метод для удаления записи из таблицы
public static function Delete($tableName, $where = null){
if($where == null){
$delete = 'delete '.$tableName;
}
else{
$delete = 'delete from '.$tableName.' where '.$where;
}
//echo $delete;
$del = mysql_query($delete);
if ($del) {
echo "ok";
return true;
}
else{
echo "Ошибка: '".mysql_error()."'";
return false;
}
}
//Метод для обновления записи в таблице
public static function Update($tableName, $set, $where = null){
if($where == null){
$update = 'update '.$tableName.' set '.$set;
}
else{
$update = 'update '.$tableName.' set '.$set.' where '.$where;
}
//echo $update;
$upd = mysql_query($update);
if ($upd){
return true;
}
else{
echo "Ошибка: '".mysql_error()."'";
return false;
}
}
//Метод для закрытия соединения с БД
public static function Close(){
return mysql_close(self::$connectDB);
}
//Метод для установки кодировки
public static function setEncoding(){
$encoding = 'SET NAMES utf8';
$enc = mysql_query($encoding);
if ($enc){
return true;
}
else{
echo "Ошибка: '".mysql_error()."'";
return false;
}
}
}
?>
我认为问题是因为你不能很好地清空$selectResult
。