[英]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.