选择返回空查询

时间:2017-12-09 15:25:23

标签: php mysql

我尝试按IllegalArgumentException Key must be integer clojure.lang.APersistentVector.invoke (APersistentVector.java:292)

选择数据

我在本地主机中获得的内容:acc_id

然而,当我设置一个特定的[]我得到正确的行是否有我的语法?

acc_id

1 个答案:

答案 0 :(得分:1)

您似乎想要使用预处理语句,而是立即执行查询。如果要将值绑定到查询,请使用以下内容:

$acc_id = // get the $acc_id value from somewhere you want
$stmt = $pdo->prepare('SELECT p_fname, p_lname, p_condition FROM patient_info WHERE acc_id = ?');
$stmt->execute([$acc_id]);
while($row = $stmt->fetch(PDO::FETCH_ASSOC))
{
     // Assign each row of data to associative array
     $data[] = $row;
}

使用占位符的示例

您可以使用bindValue()bindParam()方法,而不是使用参数数组执行语句:

$stmt = $pdo->prepare('SELECT p_fname, p_lname, p_condition FROM patient_info WHERE acc_id = :acc_id');
$stmt->bindValue(':acc_id', $acc_id);
$stmt->execute();
// everything else works as previous

这两种方法之间的区别在于文档:

bindValue()

  

将值绑定到用于准备语句的SQL语句中的相应命名或问号占位符。

bindParam()

  

将PHP变量绑定到用于准备语句的SQL语句中的相应命名或问号占位符。与PDOStatement :: bindValue()不同,变量被绑定为引用,并且仅在调用PDOStatement :: execute()时进行计算。

相关问题