php - 如何通过Mysql外推数据并放入数组?

标签 php mysql database

大家好,我试了很多次,但我不明白问题出在哪里...

我有一个Ajax 调用,它传递用于执行查询 MySql 的参数。 我不明白为什么不起作用并返回我 null

include_once("../config.php"); //file to connect to database
$con= mysqli_connect(DB_HOST,DB_USER,DB_PASS,DB_DATA);

//parameters (these are ok)
$ieri = strval($_GET['ieri']);
$oggi = strval($_GET['oggi']);

$magn_min = strval($_GET['magn-min']);
$magn_max = strval($_GET['magn-max']);

$ipo_min = strval($_GET['ipo-min']);
$ipo_max = strval($_GET['ipo-max']);

$lat_sup = strval($_GET['lat-sup']);
$lat_inf = strval($_GET['lat-inf']);

$lng_sin = strval($_GET['lng-sin']);
$lng_des = strval($_GET['lng-des']);

$id_call = $_GET['id-call'];
$offset = ($id_call - 1)*400;

if(isset($_GET['lat-sup'])) {   
 $query = "SELECT * FROM earthquakes WHERE milliseconds BETWEEN " .$ieri." AND " .$oggi." AND magnitude BETWEEN " .$magn_min." AND " .$magn_max." AND ipocentro BETWEEN " .$ipo_min." AND " .$ipo_max." AND latitude BETWEEN " .$lat_inf." AND " .$lat_sup." AND longitude BETWEEN " .$lng_sin." AND " .$lng_des." OFFSET ".$offset." LIMIT 400";
 $n_quakes = "SELECT COUNT(*) FROM earthquakes WHERE milliseconds BETWEEN " .$ieri." AND " .$oggi." AND magnitude BETWEEN " .$magn_min." AND " .$magn_max." AND ipocentro BETWEEN " .$ipo_min." AND " .$ipo_max." AND latitude BETWEEN " .$lat_inf." AND " .$lat_sup." AND longitude BETWEEN " .$lng_sin." AND " .$lng_des;
}
else{
 $query = "SELECT * FROM earthquakes WHERE milliseconds BETWEEN " .$ieri." AND " .$oggi." AND magnitude BETWEEN " .$magn_min." AND " .$magn_max." AND ipocentro BETWEEN " .$ipo_min." AND " .$ipo_max." OFFSET ".$offset." LIMIT 400";
 $n_quakes = "SELECT COUNT(*) FROM earthquakes WHERE milliseconds BETWEEN " .$ieri." AND " .$oggi." AND magnitude BETWEEN " .$magn_min." AND " .$magn_max." AND ipocentro BETWEEN " .$ipo_min." AND " .$ipo_max;
}

$result = mysqli_query($con,$query);
print_r($result); //return null

while ($row = mysqli_fetch_assoc($result)) { 
   $array_quakes[] = $row;
}
mysqli_free_result($array_quakes);


echo json_encode($n_quakes,$array_quakes); 
mysqli_close($con); // close connection with database

为什么 print_r($result); 返回 null ? 但是我怀疑 SELECT COUNT(*) 计算返回的行数是不正确的...

你能帮帮我吗?

非常感谢,对不起我的英语...

最佳答案

这可能是缺少括号。 用括号包裹你的 between 条件

$query = "SELECT * 
FROM earthquakes 
WHERE (milliseconds BETWEEN `$ieri` AND `$oggi`)
    AND (magnitude BETWEEN `$magn_min` AND `$magn_max`)
    AND (ipocentro BETWEEN `$ipo_min` AND `$ipo_max`)
OFFSET $offset LIMIT 400";

$n_quakes = "SELECT COUNT(*)
FROM earthquakes
WHERE (milliseconds BETWEEN `$ieri` AND `$oggi`)
   AND (magnitude BETWEEN `$magn`_min AND `$magn_max`)
   AND (ipocentro BETWEEN `$ipo_min` AND `$ipo_max`)
   AND (latitude BETWEEN `$lat_inf` AND `$lat_sup`)
   AND (longitude BETWEEN `$lng_sin` AND `$lng_des`)";

关于php - 如何通过Mysql外推数据并放入数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50641555/

相关文章:

php - 如何用单引号替换双引号

php - MYSQL 检查任一表中是否存在值 : login script

php - mysql_num_rows() 输入验证

database - 如何使用数据库服务器进行分布式作业调度?

模式和数据的数据库版本控制和迁移技术

javascript - ajax 返回负载而不是表单数据

javascript - 单击原始div时输出可滚动div,并自动滚动到div底部

mysql - 重命名 Django 模型及其对应的 MySQL 表

php函数生成随机字符串,连续返回重复值

sql - 优化PostgreSQL以进行快速测试