使用PDO插入不在Mac上插入数据但在Windows上有效

时间:2018-10-18 13:55:57

标签: php mysql pdo

我正在努力使我的插入和更新功能在MAC上运行,但在Windows上运行得很好

我正在学习https://sonarlearning.co.uk/coursepage.php?topic=web&course=ext-php-register-login-oop

的教程

我很困惑,因为它不返回任何错误或输出。

  <?php

    session_start();

    $GLOBALS['config'] = array(
        'mysql' => array(
            'host' => 'localhost',
            'user' => 'root',
            'password' => '123456',
            'db' => "camagru"
        ),
        'remember' => array(
            'cookie_name' => 'hash',
            'cookie_expiry' => 604800,
        ),
        'session' => array(
            'session_name' => 'user',
            'token_name' => 'token',
        ),
    );

    spl_autoload_register(function($class){
        require_once 'classes/' . $class .'.class'. '.php';
    });

    require_once 'functions/sanitize.php';
?>

<?php
    require_once 'core/init.php';

    $user = DB::getInstance()->insert('users',array(
        'username' => 'Dale',
        'password' => '123456',
        'salt' => 'salt'));

    if ($user) {
        echo "yay";
    } else {
        echo "i couldnt do it";
    }

/*  if(session::exists("success"))
    {
        echo session::flash('success');
    }
 */
?>

<?php
    require_once 'core/init.php';

    class DB
    {
        private static $_instance = null;
        private $_pdo,
                $_query,
                $_error = false,
                $_results,
                $_count = 0;
        private function __construct()
        {
            try
            {
                $this->_pdo = new PDO('mysql:host=' . config::get('mysql/host') .';
                dbname=' . config::get('mysql/db'), config::get('mysql/user'),
                config::get('mysql/password'));
            }
            catch (PDOException $e)
            {
                die($e->getMessage());
            }
        }

        public static function getInstance()
        {
            if (!isset(self::$_instance)) {
                self::$_instance = new DB();
            }
            return (self::$_instance);
        }

        public function query($sql,$params = array())
        {
            $this->_error = false;
            if ($this->_query = $this->_pdo->prepare($sql))
            {
                $x = 1;
                if(count($params))
                {
                    foreach ($params as $param) {
                        $this->_query->bindValue($x,$param);
                        $x++;
                    }
                }
                if ($this->_query->execute()) {
                    $this->_results = $this->_query->fetchALL(PDO::FETCH_OBJ);
                    $this->_count = $this->_query->rowCount();
                }
                else {
                    $this->_error = true;
                }
            }
            return $this;
        }

        public function action($action, $table, $where = array())
        {
            if (count($where) === 3) {
                $operators = array('=', '>', '<', '>=', '<=');

                $field      = $where[0];
                $operator   = $where[1];
                $value      = $where[2];

                if (in_array($operator, $operators))
                {
                    $sql = "{$action} FROM {$table} WHERE {$field} {$operator} ?";
                    if (!$this->query($sql, array($value))->error()) {
                        return $this;
                    }
                }
            }
            return false;
        }

        public function get($table, $where)
        {
            return $this->action('SELECT *', $table, $where);
        }

        public function delete($table, $where)
        {
            return $this->action('DELETE', $table, $where);
        }

        public function results()
        {
            return $this->_results;
        }

        public function first()
        {
            return $this->results()[0];
        }

        public function insert($table, $fields = array())
        {
            if (count($fields))
            {
                $keys = array_keys($fields);
                $values = '';
                $x = 1;
                foreach ($fields as $field) {
                    $values .= '?';
                    if($x < count($fields))
                    {
                        $values .= ', ';
                    }
                    $x++;
                }
                $sql = "INSERT INTO {$table} (`" . implode('`, `', $keys) . "`) VALUES ({$values})";
                if (!$this->query($sql, $fields)->error())
                {
                    return true;
                }
            }
                return false;
        }

        public function update($table, $id, $fields)
        {
            $set = '';
            $x = 1;

            foreach ($fields as $name => $values) {
                $set .= "{$name} = ?";
                if($x < count($fields))
                    {
                        $set .= ', ';
                    }
                    $x++;
            }
            $sql = "UPDATE {$table} SET {$set} WHERE `user_id` = {$id}";
            echo $sql;
            if (!$this->query($sql, $fields)->error())
            {
                return true;
            }
            return false;
        }

        public function error()
        {
            return $this->_error;
        }

        public function count()
        {
            return $this->_count;
        }
    }

?>

0 个答案:

没有答案