Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/242.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
数据库<&燃气轮机;PHP通信脚本不工作_Php_Mysql_Database_Mysqli - Fatal编程技术网

数据库<&燃气轮机;PHP通信脚本不工作

数据库<&燃气轮机;PHP通信脚本不工作,php,mysql,database,mysqli,Php,Mysql,Database,Mysqli,所以我得到了这段代码,它是一个PHP脚本,用于将我的数据库与我的应用程序进行通信。但是,不知何故,更新功能根本不起作用,我也不知道出了什么问题——尽管我99%确定它不是应用程序本身 这是整个php脚本 <?php class DataBase { private $server; private $user; private $password; private $database; function __construct($serve

所以我得到了这段代码,它是一个PHP脚本,用于将我的数据库与我的应用程序进行通信。但是,不知何故,更新功能根本不起作用,我也不知道出了什么问题——尽管我99%确定它不是应用程序本身

这是整个php脚本

    <?php

class DataBase
{
    private $server;
    private $user;
    private $password;
    private $database;

    function __construct($server, $user, $password, $database)
    {
        $this->server = $server;
        $this->user = $user;
        $this->password = $password;
        $this->database = $database;
    }

    private function connect()
    {
        $connect = mysqli_connect($this->server, $this->user, $this->password) or die('Error, no se ha podido conectar.');
        mysqli_select_db($connect, $this->database);

        return $connect;
    }

    private function diconnect($connect)
    {
        return mysqli_close($connect);
    }

    private function wheres($wheres)
    {
        $w = '';

        foreach ($wheres as $where => $key)
        {
            $w .= ' `'.$where.'` = "'.$key.'"';
        }

        return $w;
    }

    private function sets($sets)
    {
        $w = '';

        foreach ($sets as $set => $key)
        {
            $w .= ' `'.$set.'` = "'.$key.'",';
        }

        return substr($w, 0, -1);
    }

    public function select($table, $wheres = null)
    {
        $connect = $this->connect();

        if ($wheres == null)
        {
            $query = mysqli_query($connect, 'SELECT * FROM `'.$table.'`');
        } else {
            $query = mysqli_query($connect, 'SELECT * FROM `'.$table.'` WHERE '.$this->wheres($wheres));
        }

        $i = 0;
        $ret = array();

        while ($row = mysqli_fetch_assoc($query)) {
            foreach ($row as $key => $value) {
                $ret[$i][$key] = $value;
            }

            $i++;
        }

        return ($ret);
    }

    public function insert($table, $inserts)
    {
        $connect = $this->connect();
        $values = array_values($inserts);

        $keys = array_keys($inserts);

        return $query = mysqli_query($connect, 'INSERT INTO `'.$table.'` (`'.implode('`,`', $keys).'`) VALUES (\''.implode('\',\'', $values).'\')');
    }

    public function delete($table, $wheres = null)
    {
        $connect = $this->connect();

        if ($wheres == null)
        {
            return $query = mysqli_query($connect, 'DELETE FROM `'.$table.'`');
        } else {
            return $query = mysqli_query($connect, 'DELETE FROM `'.$table.'` WHERE '.$this->wheres($wheres));
        }
    }

    public function update($table, $id, $sets = null)
    {
        $connect = $this->connect();

        return $query = mysqli_query($connect, 'UPDATE `'.$table.'` SET'.$this->sets($sets).' WHERE `id` = "'.$id.'"');
    }

}

if (!empty($_POST))
{
    if (isset($_POST['method']))
    {
        if (isset($_POST['table']))
        {
            $DataBase = new DataBase('127.0.0.1', 'root', 'password', 'coord_tic');

            switch ($_POST['method'])
            {
                case 'insert':
                    $inserts = $_POST;
                    unset($inserts['table']);
                    unset($inserts['method']);
                    echo json_encode($DataBase->insert($_POST['table'], $inserts));
                    break;

                case 'delete':
                    $wheres = $_POST;
                    unset($wheres['table']);
                    unset($wheres['method']);
                    echo json_encode($DataBase->delete($_POST['table'], $wheres));
                    break;

                case 'select':
                    $wheres = $_POST;
                    unset($wheres['table']);
                    unset($wheres['method']);
                    echo json_encode($DataBase->select($_POST['table'], $wheres));
                    break;

                case 'update':
                    $wheres = $_POST;
                    unset($wheres['table']);
                    unset($wheres['method']);
                    unset($wheres['id']);
                    echo json_encode($DataBase->update($_POST['table'], $_POST['id'], $wheres));
                    break;

                default:
                    echo json_encode(false);
                    break;
            }
        } else {
            echo json_encode(false);
        }
    } else {
        echo json_encode(false);
    }
} else {
    echo json_encode(false);
}

您的代码可以在简单的情况下工作

测试代码:

// ddl for x table is 
// create table x (id int, val int);
$DataBase = new DataBase('127.0.0.1', 'root', 'password', 'test');
var_dump($DataBase->insert('x', array('id' => 8, 'val' => 13)));
var_dump($DataBase->select('x', array('id' => 8)));
var_dump($DataBase->update('x', 8, array('val' => 25)));
var_dump($DataBase->select('x', array('id' => 8)));
输出:

bool(true)
array(1) {
  [0]=>
  array(2) {
    ["id"]=>
    string(1) "8"
    ["val"]=>
    string(2) "13"
  }
}
bool(true)
array(1) {
  [0]=>
  array(2) {
    ["id"]=>
    string(1) "8"
    ["val"]=>
    string(2) "25"
  }
}

您应该添加不适合您的测试数据。例如,更新不起作用的数据结构和POST数据。

您进行过任何调试吗?比如回显你的查询,看看它是否会直接在phpmyadmin/mysql中执行?提示:在这里转储160行代码,希望有人能发现其中的错误,这不是怎么回事……问题是这是由一些不再是朋友的家伙写的,我有点依赖于此,但实际上我对PHP一无所知。。。我知道这不是最好的方式,我也不想把我的戏剧传播开来,但我需要帮助:P