我想创建一个动态SQL查询。例如,也许在某一点上我只想按名称搜索,而在其他情况下我想按姓名和姓氏搜索。只有sql_query填充了params,这是有效的吗?
public static function test($name,$surname) {
$db = DBInstance::getInstance();
$mysqli = $db->getConnection();
$sql = 'SELECT name FROM users WHERE ' .
'name = ? AND ' .
'surname = ?';
/* Prepare statement */
$stmt = $mysqli->prepare($sql);
/* Bind parameters. Types: s = string, i = integer, d = double, b = blob */
$stmt->bind_param('ss', $name, $surname);
/* Execute statement */
$stmt->execute();
/* Fetch result to array */
$res = $stmt->get_result();
while ($row = $res->fetch_array(MYSQLI_ASSOC)) {
var_dump($row);
}
}
谢谢。
答案 0 :(得分:0)
您可以将查询更改为:
SELECT name FROM users WHERE name =? AND姓喜欢?
当你想按名称搜索时,test($ name,$ surname)的参数将是 - >试验('提供yourname''%&#39);
请注意,%是通配符,查询中的姓氏正在使用"喜欢"所以最后查询将是:
SELECT name FROM users WHERE name =' yourname'和姓氏一样'%'。 它将搜索的内容是数据' yourname'作为姓氏和姓氏的任何价值。
现在,如果您想按名称和姓氏进行搜索,那么您可以将该函数称为 - >试验('提供yourname'' yoursurname') 所以查询将变为:
SELECT name FROM users WHERE name =' yourname'并且喜欢' yoursurname'。 它将搜索的内容是数据' yourname'作为名称和'你的名字'作为姓氏。因此,只使用单个查询就可以解决这两个目的