Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/268.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
OO-PHP-MySQL连接_Php_Mysql_Oop - Fatal编程技术网

OO-PHP-MySQL连接

OO-PHP-MySQL连接,php,mysql,oop,Php,Mysql,Oop,我是PHP语言的新手,事实上,这周我开始学习它 尝试将某些文件连接到SQL数据库时,我收到以下错误消息: 分析错误:语法错误,意外的T_变量,第56行的/home/cpapalardo/wwwroot/Calendario/Calendar.php中需要T_函数 第56行是: $result = mysql_query("SELECT event_id, event_title FROM event"); 我不知道我做错了什么。有人能帮我拿这个吗 提前谢谢 代码如下: <?php inc

我是PHP语言的新手,事实上,这周我开始学习它

尝试将某些文件连接到SQL数据库时,我收到以下错误消息:

分析错误:语法错误,意外的T_变量,第56行的/home/cpapalardo/wwwroot/Calendario/Calendar.php中需要T_函数

第56行是:

$result = mysql_query("SELECT event_id, event_title FROM event");
我不知道我做错了什么。有人能帮我拿这个吗

提前谢谢

代码如下:

<?php include("DB_Connect.php");

class Calendar1 extends DB_Connect{

private $data;
private $month;
private $year;
private $daysMonth;
private $startDay;

public function __construct($dbo=NULL, $data=NULL){
    parent::__construct();

    if(isset($data)){
        $this->data = $data;
    }else{
        $this->data = date('Y-m-d H:i:s');              
    }

    //convert to timestamp and determines month and year of the calendar
    $ts = strtotime($this->data);
    $this->month= date("m", $ts);
    $this->year= date('Y', $ts);            

    //how many days the month has
    $this->daysMonth= date('t', strtotime($year.'-'.($month-1).'-01'));

    //what day of the week the month starts in
    $ts = mktime(0, 0, 0, $this->month, 1, $this->year);
    $this->startDay= date('w', $ts);
}

private function loadEventData($id=NULL){
    $sql = "SELECT 
                'event_id', 'event_title', 'event_desc', 'event_start', 'event_end' 
            FROM 'events'";

    if(!empty($id)){
        $sql .="WHERE 'event_id'=:id LIMIT 1";//returns one result
    }else{
        $start_ts = mktime(0, 0, 0, $this->month, 1, $this->year);
        $end_ts = mktime(23, 59, 59, $this->month+ 1, 0, $this->year);
        $start_date = date('Y-m-d H:i:s', $start_ts);
        $end_date = date('Y-m-d H:i:s', $end_ts);

        $sql = "WHERE 'event_start'
                BETWEEN '$start_date'
                AND '$end_date'
                ORDER BY 'event_start'";
    }

}
}

//execute the SQL query and return records
$result = mysql_query("SELECT event_id, event_title FROM event");
//fetch tha data from the database
while ($row = mysql_fetch_array($result)) {
echo "ID:".$row['event_id']." Name:".$row['event_title'];

}

?>



<?php

class DB_Connect{
    protected $cn;

    public function __construct(){
        $cn = mysql_connect("testDatabase", "admin", "pass123");
        mysql_select_db("admin", $cn);
    }
}
?>

可以使用[]方括号而不是{}访问数组元素。您需要更改以下行:

echo "ID:".$row{'event_id'}." Name:".$row{'event_title'};
具体如下:

echo "ID:".$row['event_id']." Name:".$row['event_title'];
编辑 您正在为列和表使用单引号。要么删除它们,要么使用反勾号

$sql = "SELECT 
        'event_id', 'event_title', 'event_desc', 'event_start', 'event_end' 
    FROM 'events'";
    
应该是:

$sql = "SELECT 
            event_id, event_title, event_desc, event_start, event_end 
        FROM events";
此行$sql.=其中'event_id'=:id LIMIT 1//使用:id返回一个结果,该绑定方法未在代码中实现

您可能必须将其更改为$sql.=其中event_id=$id LIMIT 1//返回一个结果

由于它是一个列,因此没有在event_id周围加引号

新重写:

改为:

echo "ID:".$row['event_id']." Name:".$row['event_title'];
“event_start”的行顺序不应用单引号括起来

使用

重写:

<?php
include("DB_Connect.php");

class Calendar extends DB_Connect{

    private $data;
    private $month;
    private $year;
    private $daysMonth;
    private $startDay;

    public function __construct($dbo=NULL, $data=NULL){
        parent::__construct();

        if(isset($data)){
            $this->data = $data;
        }else{
            $this->data = date('Y-m-d H:i:s');              
        }

        //convert to timestamp and determines month and year of the calendar
        $ts = strtotime($this->data);
        $this->month= date("m", $ts);
        $this->year= date('Y', $ts);            

        //how many days the month has
        $this->daysMonth= date('t', strtotime($year.'-'.($month-1).'-01'));

        //what day of the week the month starts in
        $ts = mktime(0, 0, 0, $this->month, 1, $this->year);
        $this->startDay= date('w', $ts);
    }

    private function loadEventData($id=NULL){
        $sql = "SELECT 
                    'event_id', 'event_title', 'event_desc', 'event_start', 'event_end' 
                FROM 'events'";

        if(!empty($id)){
            $sql .="WHERE 'event_id'=:id LIMIT 1";//returns one result
        }else{
            $start_ts = mktime(0, 0, 0, $this->month, 1, $this->year);
            $end_ts = mktime(23, 59, 59, $this->month+ 1, 0, $this->year);
            $start_date = date('Y-m-d H:i:s', $start_ts);
            $end_date = date('Y-m-d H:i:s', $end_ts);

            $sql = "WHERE 'event_start'
                    BETWEEN '$start_date'
                    AND '$end_date'
                    ORDER BY `event_start`";
        }

    }
    
}

    //execute the SQL query and return records
    $result = mysql_query("SELECT event_id, event_title FROM event");
    //fetch tha data from the database
    while ($row = mysql_fetch_array($result)) {
    
    echo "ID:".$row['event_id']." Name:".$row['event_title'];

    }

    $evento = mysql_query("select * from event");

    while ($row = mysql_fetch_array ($evento)){
        echo $row['event_id'] . "<br>" . $row['event_title'] . "<br>";
    }

?>

旁注:第一段代码中的大括号似乎不匹配,在我的IDE中也不匹配。尝试删除上次while循环后的最后一个大括号,然后将其移动到//执行SQL查询并返回记录请查看MySQLi而不是PHP的MySQL函数。在/*$evento=MySQL\u queryselect*from event中还有一个开始注释标记/*;但是没有关闭*/这样也会抛出/导致错误。我很难给出一个答案,因为我不知道你是否希望它被注释掉。你过早地关闭了你的方法,就在给出错误的那一行之前。你也不会关门。你应该把实际的密码发出来。嘿,谢谢你的回答。我对代码做了一些修改。我用的是记事本++,所以我对大括号有点困惑。很抱歉给您带来不便。不止这些,没有查询会执行。代码写为SELECT“event_id”。。。等等,你是对的@AbhikChakraborty,我在试图快速回复时错过了这个,Fred-ii-,谢谢你的帮助!当我写这个问题时,我很匆忙,忘记了修复代码的某些部分。我仍然收到相同的错误消息,但是现在我可以看到MySQL的选择结果了!我仍在查找如何修复此错误消息。再次感谢!:@不客气。我正要将“事件开始”的顺序改为“事件开始”的顺序,不应该用单引号括起来。看看这个改变是否能修复你的代码。我用同样的代码编辑了我的答案。我发现了更多的错误@如果您发布的代码是您的生产代码,请告诉我。我将发布一个快速编辑。请参阅我的编辑,并在New rewrite@CPpaI下发现其他内容。您有一个查询,其中包含表的事件和单数形式的事件;它是哪一个,或者您在两个不同的表中同时使用这两个@CPpa
echo "ID:".$row['event_id']." Name:".$row['event_title'];
ORDER BY event_start
ORDER BY `event_start`
<?php
include("DB_Connect.php");

class Calendar extends DB_Connect{

    private $data;
    private $month;
    private $year;
    private $daysMonth;
    private $startDay;

    public function __construct($dbo=NULL, $data=NULL){
        parent::__construct();

        if(isset($data)){
            $this->data = $data;
        }else{
            $this->data = date('Y-m-d H:i:s');              
        }

        //convert to timestamp and determines month and year of the calendar
        $ts = strtotime($this->data);
        $this->month= date("m", $ts);
        $this->year= date('Y', $ts);            

        //how many days the month has
        $this->daysMonth= date('t', strtotime($year.'-'.($month-1).'-01'));

        //what day of the week the month starts in
        $ts = mktime(0, 0, 0, $this->month, 1, $this->year);
        $this->startDay= date('w', $ts);
    }

    private function loadEventData($id=NULL){
        $sql = "SELECT 
                    'event_id', 'event_title', 'event_desc', 'event_start', 'event_end' 
                FROM 'events'";

        if(!empty($id)){
            $sql .="WHERE 'event_id'=:id LIMIT 1";//returns one result
        }else{
            $start_ts = mktime(0, 0, 0, $this->month, 1, $this->year);
            $end_ts = mktime(23, 59, 59, $this->month+ 1, 0, $this->year);
            $start_date = date('Y-m-d H:i:s', $start_ts);
            $end_date = date('Y-m-d H:i:s', $end_ts);

            $sql = "WHERE 'event_start'
                    BETWEEN '$start_date'
                    AND '$end_date'
                    ORDER BY `event_start`";
        }

    }
    
}

    //execute the SQL query and return records
    $result = mysql_query("SELECT event_id, event_title FROM event");
    //fetch tha data from the database
    while ($row = mysql_fetch_array($result)) {
    
    echo "ID:".$row['event_id']." Name:".$row['event_title'];

    }

    $evento = mysql_query("select * from event");

    while ($row = mysql_fetch_array ($evento)){
        echo $row['event_id'] . "<br>" . $row['event_title'] . "<br>";
    }

?>