查询无法使用php

时间:2017-07-12 14:36:00

标签: php mysql

我是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);
?>

2 个答案:

答案 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."' ";