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

时间:2013-04-11 11:16:16

标签: php mysql

我会将查询传递给此函数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'

任何人都可以告诉我如何在select,insert和update

中插入tenant_id

提前致谢

2 个答案:

答案 0 :(得分: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...");

希望这有帮助。

答案 1 :(得分: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是deprecated):

$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);