繁体   English   中英

如何在mysql查询中插入where条件

[英]How to insert where condition in mysql query

我将把查询传递给该函数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();
        }
    }

我也想在INSERT查询的SELECT查询中添加tenent_id = '1' 同样,我需要对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的想法

提前致谢

更好的做法是使用正确的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...");

希望这可以帮助。

简单的答案是:只需将条件添加到查询中即可。 调用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);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM