我是Php和MYsql的新手, 我正在尝试使用包含使用php的变量创建一个简单的查询。 但是我认为我没有正确地使用变量编写querty,因为此查询的结果是0。
我很乐意为您提供帮助,这是我的代码:
<?php
$phone = $_GET['phone'];
echo $phone;
$query = "SELECT * FROM `APPUsers` WHERE `Phone` LIKE "."'".$phone."' ";
echo $query;
$result = mysqli_query($mysqli, $query);
echo mysqli_num_rows($result);
?>
答案 0 :(得分:1)
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";
$conn = new mysqli($servername, $username, $password, $dbname);
$sql = "SELECT * FROM APPUsers WHERE Phone LIKE '%$phone%'";
$result = $conn->query($sql);
上面有一个快速的解决方案,但它不安全, 因为容易注射......
下面我们来看看如何做到以及为什么这样做
将敏感信息存储在单独的文件中是一种很好的做法 在文档根目录之外,它意味着无法从网络访问。
所以让我们创建一个文件configDB.ini例如并放入db informations
servername = something;
username = something;
password = something;
dbname = something;
一旦这样做,我们就可以创建一个名为dbconn.php的脚本并使用凭据导入该文件, 通过这种方式,凭证和连接之间存在抽象。
dbconn.php :中的
$config = parse_ini_file('../configDB.ini');
$conn = mysqli_connect('localhost',$config['username'],$config['password'],$config['dbname']);
我们甚至可以改进连接到db的代码一次,并且在我们需要查询时始终使用相同的连接。
function db_connect() {
// static will not connect more than once
static $conn;
if(!isset($conn)) {
$config = parse_ini_file('../configDB.ini');
$conn = mysqli_connect('localhost',$config['username'],$config['password'],$config['dbname']);
}
return $conn;
}
...
$conn = db_connect();
$sql = "SELECT * FROM APPUsers WHERE Phone LIKE '%$phone%'";
$result = mysqli_query($conn,$sql);
最后,我们来谈谈 mysqli_query
你应该使用MySQLi扩展而不是MySQL扩展的原因很多:
来自PHP 5.5.0的不推荐使用mysql并引入了mysqli
为什么选择mysqli(实力)
面向对象
准备好的陈述
许多功能
无注射
答案 1 :(得分:-1)
您是否连接到数据库?
APPUsers和Phone周围的撇号可能不是正确的,因为它们不是单撇号,而是一些奇怪的波浪形撇号。
试试这个:
$query = "SELECT * FROM 'APPUsers' WHERE 'Phone' LIKE '".$phone."' ";