#php #mysql #oop
#php #mysql #ооп
Вопрос:
Я новичок в php. Пожалуйста, проверьте следующий код. Я не получаю ошибку «База данных не выбрана» для приведенного ниже кода. Я написал код в oops. Любая помощь будет оценена. Пожалуйста, помогите. Я получаю сообщение об ошибке в этой строке
die("invalid".mysql_error());'
в методе runquery ($query).
Dbconfig.php
<?php
class Dbconfig
{
private $connection;
public function __constructor($hostname,$username,$password,$database){
$this->connection=mysql_connect($hostname,$username,$password);
if(!$this->connection){
die(mysql_error());
}else{
if(!mysql_select_db($database,$this->connection)){
die(mysql_error());
}
}
}
function runQuery($query){
$result= mysql_query($query);
if($result){
while($row= mysql_fetch_array($result)){
$resultset[]= $row;
}
if(!empty($resultset)){
return $resultset;
}
} else {
die("invalid".mysql_error());
}
}
}
?>
Config.php
<?php
require("path to dbconfig.php");
$base="http://localhost/slvbilling/";
$hostname='localhost';
$username='root';
$password='';
$database='slv';
$connect = new Dbconfig($hostname,$username,$password,$database);
?>
Комментарии:
1. mysql_ * обесценивается в новой версии и удаляется в версии 7.0. Пожалуйста, загляните в mysqli_ * или PDO API.
2. Может быть, это
require("path to dbconfig.php");
проблема?3. да, пожалуйста, используйте
mysqli_*
. вы допустили ошибку в define constructor. вместо этого должно бытьpublic function __construct($hostname,$username,$password,$database)
public function __constructor($hostname,$username,$password,$database)
4. конструктор будет определен как
__construct
не как__constructor
Ответ №1:
Попробуйте использовать приведенный ниже код в Dbconfig.php файл
<?php
class Dbconfig
{
private $connection;
public function __construct($hostname,$username,$password,$database){
$this->connection=mysql_connect($hostname,$username,$password);
if(!$this->connection){
die(mysql_error());
}else{
if(!mysql_select_db($database,$this->connection)){
die(mysql_error());
}
}
}
function runQuery($query){
$result= mysql_query($query);
if($result){
while($row= mysql_fetch_array($result)){
$resultset[]= $row;
}
if(!empty($resultset)){
return $resultset;
}
} else {
die("invalid".mysql_error());
}
}
}
?>
это касается только конструктора, попробуйте приведенный выше код, это может помочь!
Ответ №2:
Помещается or die(mysql_error())
с помощью функции mysql вместо размещения избыточных условий.
Пожалуйста, попробуйте использовать приведенный ниже код..
<?php
class Dbconfig
{
private $connection;
public function __construct($hostname,$username,$password,$database){
$this->connection=mysql_connect($hostname,$username,$password)or die(mysql_error());
mysql_select_db($database,$this->connection))or die(mysql_error());
}
function runQuery($query){
$result= mysql_query($query)or die("invalid".mysql_error());
if($result){
while($row= mysql_fetch_array($result)){
$resultset[]= $row;
}
if(!empty($resultset)){
return $resultset;
}
}
}
}
?>
Ответ №3:
Попробуйте передать соединение с mysql_query:
function runQuery($query){
$result= mysql_query($query, $this->connection);
.....
это должно работать без передачи соединения, но в зависимости от остальной части кода в вашем проекте и экземпляров базы данных, которые вы создаете, это может быть проблемой.
Если вы предоставите код, вызывающий runQuery, вам будет легче получить правильный ответ.