【问题标题】:Converting mysql_fetch_array to PDOs and Having multiple parameters将 mysql_fetch_array 转换为 PDO 并具有多个参数
【发布时间】:2017-09-11 12:40:52
【问题描述】:
        <?php

        class CMySQL {

            // variables
            var $sDbName;
            var $sDbUser;
            var $sDbPass;

            var $vLink;

            // constructor

            public function CMySQL(){
                $this->engine = 'mysql';
                $this->host = 'Localhost';
                $this->database = 'api';
                $this->user = 'root';
                $this->pass = '';
                $dns = $this->engine.':dbname='.$this->database.";host=".$this->host;
                 $this->vLink = $dns;


            }
            // return one value result
            function getOne($query, $index = 0) {
                if (! $query)
                    return false;
                $res = mysql_query($query);
                $arr_res = array();
                if ($res && mysql_num_rows($res))
                    $arr_res = mysql_fetch_array($res);
                if (count($arr_res))
                    return $arr_res[$index];
                else
                    return false;
            }

            // executing sql
            function res($query, $error_checking = true) {
                if(!$query)
                    return false;
                $res = $this->vLink;
                if (!$res)
                    $this->error('Database query error', false, $query);
                return $res;
            }

            // return table of records as result in pairs
            function getPairs($query, $sFieldKey, $sFieldValue, $arr_type = MYSQL_ASSOC) {
                if (! $query)
                    return array();

                $res = $this->res($query);
                $arr_res = array();
                if ($res) {
                    while ($row = mysql_fetch_array($res, MYSQL_ASSOC)) {
                        $arr_res[$row[$sFieldKey]] = $row[$sFieldValue];
                    }
                    mysql_free_result($res);
                }
                return $arr_res;
            }

            // return table of records as result
            function getAll($query, $arr_type = MYSQL_ASSOC) {
                if (! $query)
                    return array();

                if ($arr_type != MYSQL_ASSOC && $arr_type != MYSQL_NUM && $arr_type != MYSQL_BOTH)
                    $arr_type = MYSQL_ASSOC;

                $res = $this->res($query);
                $arr_res = array();
                if ($res) {
                    while ($row = mysql_fetch_array($res, $arr_type))
                        $arr_res[] = $row;
                    mysql_free_result($res);
                }
                return $arr_res;
            }

            // return one row result
            function getRow($query, $arr_type = MYSQL_ASSOC) {
                if(!$query)
                    return array();
                if($arr_type != MYSQL_ASSOC && $arr_type != MYSQL_NUM && $arr_type != MYSQL_BOTH)
                    $arr_type = MYSQL_ASSOC;
                $res = $this->res ($query);
                $arr_res = array();
                if($res && mysql_num_rows($res)) {
                    $arr_res = mysql_fetch_array($res, $arr_type);
                    mysql_free_result($res);
                }
                return $arr_res;
            }

            // escape
            function escape($s) {
                return mysql_real_escape_string($s);
            }

            // get last id
            function lastId() {
                return mysql_insert_id($this->vLink);
            }

            // display errors
            function error($text, $isForceErrorChecking = false, $sSqlQuery = '') {
                echo $text; exit;
            }
        }

        $GLOBALS['MySQL'] = new CMySQL();
        ?>

我正在学习使用 PHP 创建 API,并希望将“mysql_fetch_array 和 mysql_free_result”转换为 PDO 并允许给定多个参数。上述代码的错误是

mysql_fetch_array() 期望参数 1 是资源,给定字符串

mysql_free_result() 期望参数 1 是资源,给定字符串

如何解决我遇到的这段代码..

【问题讨论】:

  • 当您可以修复错误时,您不会“解决”错误。您省略了调用代码的描述和发生错误的行号。您的问题源于您的代码中没有错误检查。
  • 您在哪里使用 PDO?不要将mysql_* 与 PDO 一起使用。
  • 您的数据库适配器类的/一个答案是我不久前写的the answer。检查“编辑”部分。祝你好运。

标签: php pdo


【解决方案1】:

您缺少连接逻辑,我看到您评论了这一行:

//parent::CMySQL( $dns, $this->user, $this->pass );

但是,您似乎没有这个的父类。

Check this link

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-03-13
  • 2018-01-15
  • 1970-01-01
  • 1970-01-01
  • 2018-09-04
  • 1970-01-01
相关资源
最近更新 更多