2016-03-15 29 views
0

我写的代码从mysql数据库提取数据,当值通过变量传递它给错误

<?php 
$host="localhost"; 
$user="root"; 
$pass=""; 
$database="users"; 
$con=mysqli_connect($host,$user,$pass) or die ("connection failure"); 

$day="Mon"; 
$status="false"; 
$timeInterval="08-10"; 
mysqli_select_db($con,$database) or die("databaseconnection error"); 
$result=mysqli_query($con,"SELECT hallId FROM lectureHall WHERE status=$status AND day=$day AND timeInterval=$timeInterval"); 
while($row=mysqli_fetch_assoc($result)){ 
    $tmp[]=$row; 

} 


echo json_encode($tmp); 
mysqli_close($con); 


?> 

这段代码给了我一个警告,显示:

Warning: mysqli_fetch_assoc() expects parameter 1 to be mysqli_result null given

然而,当我直接给出的值没有像这样传递变量

$result=mysqli_query($con,"SELECT hallId FROM lectureHall WHERE status='false' AND day='Mon' AND timeInterval='08-10'"); 

它给出了结果,为什么VA可延续的传球码不起作用?是否有将String值传递给query的特殊方法。需要变量传递,因为我将通过Java HTTP post给这些变量赋值,请帮我解决这个问题。提前

+0

连接变量。 –

回答

1

感谢您需要引用周围的变量:

$result=mysqli_query($con,"SELECT hallId FROM lectureHall WHERE status='$status' AND day='$day' AND timeInterval='$timeInterval'"); 
while($row=mysqli_fetch_assoc($result)){ 
    $tmp[]=$row; 

} 

您应该检查一个MySQL错误也是如此。这将显示您的错误:

... your mysqli_query ... 
if(!$result){ 
    die(mysqli_error($con)); 
} 
... your while... 
0

试试这个:

$result = mysqli_query($con,"SELECT hallId FROM lectureHall WHERE status= '".$status."' AND day='".$day."' AND timeInterval= '".$timeInterval."' ") or die(mysqli_error($con)); 

这是更好地解决单引号和双引号。

你也可以使用这个die(mysqli_error($ con))来确保正确的错误处理,以防出现语法错误。

希望这会有所帮助。

和平! xD