0

我对这里定义的 PHP 类不是 100% 满意:mysqli

我去掉了一些胆量来缩短它,并在运行时得到一个解析错误。

<?php

function query($x) 
{
if ($x > 8) {
    return 'greater than eight!';   
    } else {
    return true;
}
} else {
    exit();
    }
}
print query(7);

(我认为)与原版的构造相同,不是吗?当然除了签名和方法体。我以前没有遇到过 if else else 子句,它至少在逻辑上对我来说“感觉不对”。此外,我的代码不会编译。也许你可以让我直截了当?

你有任何关于如何使用它的例子吗?

其次,从原始类 - $resource 变量在哪里或如何进入它?在什么情况下对象会被传递一个 $resource 变量?

我的客户代码可能是:

$db = new MySQLi;
$db->query("SELECT * FROM my_table"); 

但我不明白 $resource 是如何发挥作用的?

4

4 回答 4

0

您有第二个 else 构造,它应该如下所示:

if($x > 8) {
    // your if(true) code
} else {
    // your if(false) code
}
于 2013-01-25T12:22:33.187 回答
0

缺少一个 if else 块,用 ** 突出显示,这就是你得到解析器错误,因为同样是你的代码的问题

<?php
final class MySQLi {
private $mysqli;

public function __construct($hostname, $username, $password, $database) {
    $this->mysqli = new mysqli($hostname, $username, $password, $database);

    if ($this->mysqli->connect_error) {
        trigger_error('Error: Could not make a database link (' . $this->mysqli->connect_errno . ') ' . $this->mysqli->connect_error);
    }

    $this->mysqli->query("SET NAMES 'utf8'");
    $this->mysqli->query("SET CHARACTER SET utf8");
    $this->mysqli->query("SET CHARACTER_SET_CONNECTION=utf8");
    $this->mysqli->query("SET SQL_MODE = ''");
}

public function query($sql) {
    $result = $this->mysqli->query($sql);



    if ($this->mysqli->errno) {
    //$mysqli->errno
    }

        if (is_resource($resource)) {
            $i = 0;

            $data = array();

            while ($row = $result->fetch_object()) {
                $data[$i] = $row;

                $i++;
            }

            $result->close();

            $query = new stdClass();
            $query->row = isset($data[0]) ? $data[0] : array();
            $query->rows = $data;
            $query->num_rows = $result->num_rows;

            unset($data);




            return $query;  
        } else {
            return true;
        }
    ***} else {
        trigger_error('Error: ' . mysql_error($this->link) . '<br />Error No: ' . mysql_errno($this->link) . '<br />' . $sql);
        exit();
    }***
}

public function escape($value) {
    return $this->mysqli->real_escape_string($value);
}

public function countAffected() {
    return $this->mysqli->affected_rows;
}

public function getLastId() {
    return $this->mysqli->insert_id;
}   

public function __destruct() {
    $this->mysqli->close();
}
}
?>
于 2013-01-25T12:25:57.693 回答
0

我假设您正在尝试做一些不同的事情,但我希望这有助于解释您如何将三个条件联系在一起。

function query($x) {
    if ($x > 8) { // If $x is greater than 8
        return 'greater than eight!';   
    } else if ($x < 8) { // If $x is lower than 8
        return true;
    } else {
        return "The number is 8!";
    }
}

print query(7);
于 2013-01-25T12:29:07.413 回答
0

您的代码中缺少某些内容。如果你有人运行你的代码。

解析错误:语法错误,第 8 行出现意外的 T_ELSE

所以你的函数应该如下所示

function query($x) 
{
    if ($x > 8) 
    {
     //runs when $x value is greater than 8
     return 'greater than eight!';   
    } 
    else 
    {
     // if the condition didnt meet, according to my knowledge you should return false here 
     return true;
    }

    exit();
}

print query(7);

如果你想要一个 else if,

if (condition)
  {
  code to be executed if condition is true;
  }
else if (condition)
  {
  code to be executed if condition is true;
  }
else
  {
  code to be executed if condition is false;
  }
于 2013-01-25T12:30:56.953 回答