我想使用以下查询获取数据,但无法正常工作

时间:2019-04-16 05:47:33

标签: php

$query = $_POST["name"];
$mob = $_POST["phone"];

此查询是否正确

$sql="SELECT * FROM oath WHERE name='%".$query."%' && phone='%".$mob."%'";

3 个答案:

答案 0 :(得分:2)

您至少有三个问题:

  • 使用通配符%时,请使用LIKE运算符检查特定的字符串是否与指定的模式匹配
  • &&替换为AND以合并您的布尔表达式(MySQL支持&&运算符,但其他数据库引擎不支持)
  • 始终使用前置语句

您的声明:

$sql = "SELECT * FROM oath WHERE name LIKE '%".$query."%' AND phone LIKE '%".$mob."%'";

准备好的声明:

<?php
...
# Input
$name  = $_POST["name"];
$phone = $_POST["phone"]; 
$name  = "%$name%";
$phone = "%$phone%"; 

# Statement
$sql = "SELECT * FROM oath WHERE name LIKE :name AND phone LIKE :phone";
$stmt = $pdo->prepare($sql);
$stmt->bindParam(':name', $name);
$stmt->bindParam(':phone', $phone);

# Execution 
$statement->execute();

# Result
$results = $statement->fetchAll(PDO::FETCH_ASSOC);

...
?>

答案 1 :(得分:0)

问题在这里:

name='%".$query."%' ... phone='%".$mob."%'"

在这里,您将equality comparison=wild card search%混合在一起。

尝试一下:

$sql = "SELECT * FROM oath WHERE name LIKE '%".$query."%' AND phone LIKE '%".$mob."%'";

,也将&&替换为AND

答案 2 :(得分:0)

尝试一下

stringsAsFactors