[英]mysqli query returns false
我正在尝试通过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进行的相同查询
您可以使用双引号而不是单引号
$query = $sql = "SELECT * FROM `zobo_vendors` WHERE vendorID = \"L00001\" LIMIT 0, 30 ";
实际上,这是您的查询语法。
您直接从phpmyadmin进行了查询,如果将其放在单引号中会起作用 -但是您将其放在双引号中。
代替:
“ SELECT * FROM
zobo_vendors
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!
或者,您可以删除反斜杠:
“选择*从
zobo_vendors
vendorID ='L00001'限制0,30”
ABS Rana的答案是另一个有效的选择。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.