mysqli查询返回false

问题描述 投票:0回答:3

我试图通过php mysqli在我的数据库上运行一个选择查询但是,它一直返回false。我知道这不是查询语法,因为我直接从phpMyAdmin得到它,它实际上返回一行。

这是我的PHP:

    //connect
$conn = mysqli_connect($server,$username,$password,$dbname);

//test connection
if(!$conn){
    die("Connection Failed:"." ".mysqli_connect_error());
}

$VendorID = mysqli_real_escape_string($conn,$_GET['vendorID']);
$VendorPass = mysqli_real_escape_string($conn,$_GET['vendorPass']);

$query = $sql = "SELECT * FROM `zobo_vendors` WHERE vendorID = \'L00001\' LIMIT 0, 30 ";
$result = mysqli_query($conn,$query);

print(mysqli_num_rows($result));

if(mysqli_num_rows($result) == 1){
    $row = mysqli_fetch_array($result,MYSQLI_ASSOC);
    if($VendorPass == $row['vendorPass']){
        date_default_timezone_set("Africa/Johannesburg");
        $day = date("d");
        $monthNum  = date("m");
        $dateObj   = DateTime::createFromFormat('!m', $monthNum);
        $monthName = $dateObj->format('M');

        $date = $day." ".$monthName.", ".date("h:i");
        echo "<script>window.AppInventor.setWebViewString('CorrectPass');</script>";
        echo $date;
    }else{
        echo "<script>window.AppInventor.setWebViewString('WrongPass');</script>";
    }
}else{
    echo "<script>window.AppInventor.setWebViewString('NonExist');</script>";
}

if($result === FALSE) {
die("Uh oh something went wrong");
}

mysqli_close($conn);

这是通过phpmyAdmin的相同查询

The query via phpMyAdmin

php mysqli
3个回答
0
投票

您可以使用双引号而不是单引号

$query = $sql = "SELECT * FROM `zobo_vendors` WHERE vendorID = \"L00001\" LIMIT 0, 30 ";

0
投票

实际上,这是您的查询语法。 你直接从phpmyadmin那里得到了一个查询,如果你把它放在单引号中就可以了 - 但你把它放在双引号内。

代替:

“SELECT * FROM zobo_vendors WHERE vendorID = \'L00001 \'LIMIT 0,30”

做:

'SELECT * FROM zobo_vendors WHERE vendorID = \'L00001 \'LIMIT 0,30'

第一个不起作用,因为在双引号字符串中,单引号不需要转义。因此,反斜杠字符不会被删除。

在phpmyadmin中,查询文本是这样的:

SELECT * FROM zobo_vendors WHERE vendorID ='L00001'LIMIT 0,30

您的查询文字字面上是这样的:

SELECT * FROM zobo_vendors WHERE vendorID = \'L00001 \'LIMIT 0,30

它带有反斜杠的MySQL!


或者,您可以删除反斜杠:

“SELECT * FROM zobo_vendors WHERE vendorID ='L00001'LIMIT 0,30”


ABS Rana的答案是另一个有效的选择。

© www.soinside.com 2019 - 2024. All rights reserved.