Php 如何从具有条件的表中选择所有数据?

Php 如何从具有条件的表中选择所有数据?,php,mysql,sql,pdo,Php,Mysql,Sql,Pdo,我是android编程新手,在查询方面遇到了麻烦。我试图寻找类似的问题,但什么也没找到:)所以,在这里 考虑到这张桌子 patient_id | name | gender | age 1 | jen | female | 20 2 | jay | male | 19 和记录表 patient_id | date | description 1 | 01-01-14 | healthy! 1 | 02-0

我是android编程新手,在查询方面遇到了麻烦。我试图寻找类似的问题,但什么也没找到:)所以,在这里

考虑到这张桌子

patient_id | name | gender | age 
      1    | jen  | female | 20
      2    | jay  |  male  | 19
和记录表

patient_id |   date   | description
      1    | 01-01-14 | healthy!
      1    | 02-01-14 | healthy!
      2    | 01-01-14 | needs medication.
我想得到某个病人的所有记录。 比如说,如果我选择patient1。。将显示patient1的所有记录

这是我的问题

$query = "SELECT * FROM records INNER JOIN patientinfo ON records.patient_id = patientinfo.patient_id WHERE records.patient_id = $patient_id";

try{
    $stmt = $dbname->prepare($query);
    $result = $stmt->execute(); 

}catch(PDOException $ex){
        $response["success"] = 0;
        $response["message"] = $ex;

        die(json_encode($response));
    }

但是它在sql语法中给了我一个错误,我认为它在
$patient\u id

errorInfo:您的SQL语法有错误;检查手册 对应于您的MySQL服务器版本,以便使用正确的语法

提前谢谢你!希望得到答案!谢谢:)

试试看:

SELECT *
FROM patientinfo, records
WHERE (patientinfo.patient_id = $patient_id) AND (patientinfo.patient_id = records.patient_id);
您还可以具体列出要显示的列,并为其指定别名,例如:

SELECT records.date AS the_date

只要$patient\u id不是空字符串,
WHERE records.patient\u id=$patient\u id
就可以了。为此,在执行查询并检查其是否正常之前,我将
echo
该查询。

“但它在sql语法中出现错误…”-存在?您在哪里设置了患者id变量?与您的问题无关,但首先,不要存储某人的年龄。它改变了。存储他们的出生日期并计算年龄。第二,只选择需要的字段,而不是选择*。第三,当您使用关键字作为列名时,许多数据库会变得挑剔。在这种情况下,字段是date。我认为这类问题不应该被否决。OP至少试过一次并请求帮助。无论是php、coldfusion、.net还是其他,首先让查询直接针对数据库工作通常是个好主意。如果它在那里工作,但在应用程序中不工作,那么您就知道问题不在于sql。如果您认为问题可能是您的变量,请硬编码一个值,然后再试一次。谢谢,但它会获取记录表中的所有数据,甚至是我单击的患者未包含的数据。:)我已经更新了答案,请现在检查。如前所述,检查$patient_id是否为空。如果不是,并且是一个数字,这应该可以正常工作。