在 IF 语句中具有多个条件的 PDO MySQL SELECT
Posted
技术标签:
【中文标题】在 IF 语句中具有多个条件的 PDO MySQL SELECT【英文标题】:PDO MySQL SELECT with multiple criteria within an IF statement 【发布时间】:2014-08-19 18:26:51 【问题描述】:我是新手,希望学习以下内容;
我想用 php 查询 mysql(我的 PDO 连接是 $dbo);
我有一个变量;
$form_category //一个整数 $form_subcategory //一个整数 $form_subcategory2 //文本 $fname //文件名 $form_class // 'create' 是本例中的类 $form_location //pdf存放的目录我的查询尝试是;
///start query ///
$quer2 = $dbo->prepare("SELECT form_id,form_description
FROM form_detail
WHERE form_name < :form_name AND form_category = :form_category AND form_subcategory = :form_subcategory AND form_subcategory2 = :form_subcategory2");
$quer2 ->bindParam(':form_id', $form_id);
$quer2 ->bindParam(':form_name', $fname);
$quer2 ->bindParam(':form_category', $catid);
$quer2 ->bindParam(':form_subcategory', $subcatid);
$quer2 ->bindParam(':form_subcategory2', $subcat2);
$quer2 ->bindParam(':form_class', $form_class);
$quer2 ->bindParam(':form_cerfa', $form_cerfa);
$quer2 ->bindParam(':form_description', $form_description);
$quer2 ->execute();
///End new query ///
我希望从上面的变量中输出 'form_reference' 和 'form_description' 以及表单名称($fname),并将其显示在文件名上带有 href 的表格中;
echo "<td colspan=\"3\" rowspan=\"1\" style=\"text-align: center; vertical-align: middle;\"><a href=".$dir."create/".$fname." target=\"_blank\">".$fname."</a></td></tr>";
【问题讨论】:
你面临什么困难。 ? 如果有意义的话,我似乎无法从查询输出中正确构建表。 @Adeel 您希望从数据库中显示result
,还是只需要使用这些变量。 ?有点混乱,请清楚。
我希望结果为我构建一个带有 form_id 的 html 表(参考)表单描述和表单名称在单独的单元格中。
【参考方案1】:
这样做,
$quer2 ->execute();
if ($sp->execute()) // Verify that result exist
$result=$quer2->fetch(PDO::FETCH_OBJ);
$result->closeCursor();
// Now , Access Form id and description in this way
echo "Form id : $result->form_id";
echo "Form Description : $result->form_description" ;
另一件事,
$quer2 ->bindParam(':form_id', $form_id);
如果它是一个 int 像这样修改它,
$quer2 ->bindParam(':form_id', $form_id , PDO::PARAM_INT);
如果是字符串则PDO::PARAM_STR
。
这是一种很好的做法,可为您提供更高的安全性。
【讨论】:
警告:PDOStatement::execute() [pdostatement.execute]: SQLSTATE[HY093]: 无效参数编号:绑定变量的数量与包含 $quer2 的行的标记数量不匹配 -> 执行(); 显然,您绑定的参数与您在查询中放入的占位符不匹配 您已经绑定了这些参数$quer2 ->bindParam(':form_class', $form_class); $quer2 ->bindParam(':form_cerfa', $form_cerfa); $quer2 ->bindParam(':form_description', $form_description);
,并且它们没有在您的查询中使用
为该文件名输出的 form_id 不正确?
在你的代码中检查这个WHERE form_name < :form_name
,不应该是WHERE form_name = :form_name
。以上是关于在 IF 语句中具有多个条件的 PDO MySQL SELECT的主要内容,如果未能解决你的问题,请参考以下文章