You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP查询1980-1990年出生客户信息失败,寻求技术协助

问题排查与修复方案

我帮你梳理下代码里的几个关键问题,修复后就能正常查询1980-1990年出生的客户信息了:

1. 语法错误:缺少分号

你的数据库连接语句末尾漏了分号,这会直接导致PHP解析失败:

// 原错误代码
$conn = new mysqli($servername, $username, $password, $dbname)

// 修复后
$conn = new mysqli($servername, $username, $password, $dbname);

2. SQL逻辑错误:条件写反了

你当前的SQL条件是dogumtarih<'1980-01-01' and dogumtarih>'1990-01-01',这意味着要找既早于1980年又晚于1990年的记录,逻辑完全矛盾,不可能查到数据。要查询1980到1990年出生的客户,应该调整为:

SELECT * FROM musteri WHERE dogumtarih >= '1980-01-01' AND dogumtarih <= '1990-12-31'

或者用BETWEEN简化写法,可读性更强:

SELECT * FROM musteri WHERE dogumtarih BETWEEN '1980-01-01' AND '1990-12-31'

3. 日期格式兼容性检查

如果数据库中dogumtarih字段不是DATE/DATETIME类型,而是字符串类型,要确保存储的日期格式是YYYY-MM-DD,否则SQL的日期比较会失效。如果存储格式不一致(比如是DD/MM/YYYY),需要先转换格式再查询:

SELECT * FROM musteri WHERE STR_TO_DATE(dogumtarih, '%d/%m/%Y') BETWEEN '1980-01-01' AND '1990-12-31'

完整修复后的代码

<?php 
$servername = "localhost"; 
$username = "root"; 
$password = ""; 
$dbname = "company"; 

$conn = new mysqli($servername, $username, $password, $dbname); // 补充分号
if ($conn->connect_error) { 
    die("Connection failed: " . $conn->connect_error); 
} 

// 修正SQL逻辑
$sql = "SELECT * FROM musteri WHERE dogumtarih BETWEEN '1980-01-01' AND '1990-12-31'"; 
$result = $conn->query($sql); 

// 添加结果输出,方便验证查询效果
if ($result->num_rows > 0) {
    while($row = $result->fetch_assoc()) {
        echo "ID: " . $row["id"]. " - 姓名: " . $row["ad"]. " - 生日: " . $row["dogumtarih"]. "<br>";
    }
} else {
    echo "0 条匹配记录";
}
$conn->close();
?>

内容的提问来源于stack exchange,提问作者Cugurel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 07:16:37