【问题标题】:How can I select all the data from a table with condition?如何从有条件的表中选择所有数据?
【发布时间】:2014-02-06 19:09:12
【问题描述】:

我是 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_id

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

提前感谢您!希望有答案!谢谢:)

【问题讨论】:

  • "但它在 sql 语法中吐出错误..." - 存在?
  • 你在哪里设置了你的 patient_id 变量?
  • 与您的问题无关,但首先,不要存储某人的年龄。它改变。存储他们的出生日期并计算年龄。其次,只选择您需要的字段,而不是选择 *。第三,当您使用关键字作为列名时,许多数据库会变得挑剔。在这种情况下,该字段是日期。
  • 我认为这类问题不应该被否决。 OP 至少尝试过并正在寻求帮助。
  • 无论是 php、coldfusion、.net 还是什么,首先让您的查询直接针对数据库工作通常是个好主意。如果它在那里工作但在您的应用程序中不起作用,那么您知道问题不在于您的 sql。如果您认为问题可能出在您的变量上,请改为硬编码一个值并尝试。

标签: php mysql sql pdo


【解决方案1】:

尝试:

SELECT *
FROM patientinfo, records
WHERE (patientinfo.patient_id = $patient_id) AND (patientinfo.patient_id = records.patient_id);

您也可以专门列出要显示的列,并为其分配别名,例如:

SELECT records.date AS the_date

WHERE records.patient_id = $patient_id 似乎没问题,只要 $patient_id 不是空字符串。为此,我会在执行查询之前echo 查询并检查它是否正常。

【讨论】:

  • 谢谢,但它正在获取记录表中的所有数据,甚至是我单击的患者未包含的数据。 :)
  • 我已经更新了我的答案,请现在检查。正如我所说,检查 $patient_id 是否为空。如果不是,并且是一个数字,这应该可以正常工作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-01
  • 2018-06-06
  • 1970-01-01
  • 1970-01-01
  • 2014-06-01
  • 1970-01-01
相关资源
最近更新 更多