0

我会将查询传递给这个函数query("SELECT * FROM table_name");

功能是

public function query($sql) {

        $resource = mysql_query($sql, $this->link_web);

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

                $data = array();

                while ($result = mysql_fetch_assoc($resource)) {
                    $data[$i] = $result;

                    $i++;
                }

                mysql_free_result($resource);

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

                unset($data);

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

我也想tenent_id = '1'SELECT查询中添加INSERT查询。同样,我需要为UPDATE.

我想带来这样的查询

SELECT * FROM table_name WHERE tenent_id = 1 and user_id = 1

INSERT INTO table_name('tenant_id, user_id') VALUE('1','1')

UPDATE table_name SET user_id = 1 WHERE tenant_id = '1'

谁能给我有关如何插入tenant_id选择,插入和更新的想法

提前致谢

4

2 回答 2

0

使用正确的 mysql 函数而不是仅仅使用查询函数是更好的做法。

例如,如果要循环浏览数据库中的许多项目,可以使用 while 循环:

$query = mysql_query("SELECT * FROM table WHERE type='2'");
while($row = mysql_fetch_array($query)){
    echo $line['id'];
}

这将回显数据库中具有类型 2 的所有 ID。

同样的原则是当你有一个对象时,使用 mysql 函数,你可以指定你希望数据如何返回。上面我在一个数组中返回了它。在这里,我将返回单行作为对象:

$query = mysql_query("SELECT * FROM table WHERE id='1'");
$object = mysql_fetch_object($query);
echo $object->id;
echo $object->type;
echo $object->*ANY COLUMN*;

这将返回: 1. 2. 无论该列的值是.


要插入数据,您不需要执行“query()”。您可以简单地使用 mysql_query($sql)。这将使生活更轻松。

此外,最好在函数中运行一个查询,这样您就可以正确处理数据。

mysql_query("INSERT...");
mysql_query("UPDATE...");
mysql_query("SELECT...");

希望这可以帮助。

于 2013-04-11T11:24:33.937 回答
0

简单的答案是:只需将条件添加到您的查询中。打电话query("SELECT * FROM table_name WHERE tenant_id = 1 and user_id = 1")

如果您担心转义传递给 SQL 查询的参数(您应该这样做!),您可以自己手动完成,例如

$query = sprintf("SELECT * FROM table_name WHERE tenant_id = %d", intval($tenant_id));
query($query);

或者更好地使用mysqli扩展提供的准备好的语句(无论如何不推荐使用mysql_query):

$stmt = $mysqli->prepare("SELECT * FROM table_name WHERE tenant_id = ?");
$stmt->bind_param("i", $tenant_id);
$stmt->execute();
$result = $stmt->get_result();
while ($row = $result->fetch_array(MYSQLI_ASSOC)) {
    // ...
}

如果我还没有回答您的问题,您可以使用库来处理您的查询,例如dibi

$result = dibi::query('SELECT * FROM [table_name] WHERE [tenant_id] = %i', $id);
$rows = $result->fetchAll(); // all rows

最后一个选项是我将使用的,您无需编写自己的查询处理函数并免费获取查询参数绑定。在您的情况下,您可以使用逐步构建查询,以便 WHERE 条件不是您的基本查询的一部分:

$query[] = 'SELECT * FROM table_name';
if ($tenant_id){
    array_push($query, 'WHERE tenant_id=%d', $tenant_id);
}
$result = dibi::query($query);
于 2013-04-11T11:43:43.947 回答