【问题标题】:PDO MySQL SELECT with multiple criteria within an IF statement在 IF 语句中具有多个条件的 PDO MySQL SELECT
【发布时间】: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 "&lt;td colspan=\"3\" rowspan=\"1\" style=\"text-align: center; vertical-align: middle;\"&gt;&lt;a href=".$dir."create/".$fname." target=\"_blank\"&gt;".$fname."&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;";

【问题讨论】:

  • 你面临什么困难。 ?
  • 如果有意义的话,我似乎无法从查询输出中正确构建表。 @Adeel
  • 您希望从数据库中显示result,还是只需要使用这些变量。 ?有点混乱,请清楚。
  • 我希望结果为我构建一个带有 form_id 的 html 表(参考)表单描述和表单名称在单独的单元格中。

标签: php mysql select if-statement


【解决方案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 -&gt;bindParam(':form_id', $form_id);

如果它是一个 int 像这样修改它, $quer2 -&gt;bindParam(':form_id', $form_id , PDO::PARAM_INT);

如果是字符串则PDO::PARAM_STR

这是一种很好的做法,可为您提供更高的安全性。

【讨论】:

  • 警告:PDOStatement::execute() [pdostatement.execute]: SQLSTATE[HY093]: 无效参数编号:绑定变量的数量与包含 $quer2 的行的标记数量不匹配 -> 执行();
  • 显然,您绑定的参数与您在查询中放入的占位符不匹配
  • 您已经绑定了这些参数$quer2 -&gt;bindParam(':form_class', $form_class); $quer2 -&gt;bindParam(':form_cerfa', $form_cerfa); $quer2 -&gt;bindParam(':form_description', $form_description);,并且它们没有在您的查询中使用
  • 为该文件名输出的 form_id 不正确?
  • 在你的代码中检查这个WHERE form_name &lt; :form_name,不应该是WHERE form_name = :form_name
猜你喜欢
  • 1970-01-01
  • 2013-09-21
  • 2014-10-20
  • 2023-03-31
  • 1970-01-01
  • 2013-12-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多