具有PDO扩展的多个查询

时间:2013-11-07 20:43:47

标签: php pdo

我正在开发一个应用程序,为此,我将我的页面组织为以下

  • Bloc php:inwhich我提出了我的疑问
  • Bloc html:我有一个表单来插入数据和表格列表 数据
  • Bloc php:我在哪里取消查询

我有这段代码(第一集团):

<?php
$editFormAction = $_SERVER['PHP_SELF'];
if (isset($_SERVER['QUERY_STRING'])) {
$editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
}

//------Query used to insert data
if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {

    $insertSQL=$pro->prepare("INSERT INTO position (ID, DESCRIPTION) VALUES(:a, :b)");
        $insertSQL->bindValue(':a', $_POST['ID'], PDO::PARAM_INT);
        $insertSQL->bindValue(':b', $_POST['DESCRIPTION'], PDO::PARAM_STR);
    $insertSQL->execute();
}

//------Query used to update data
if ((isset($_POST["MM_update"])) && ($_POST["MM_update"] == "form2")) {

    $updateSQL=$pro->prepare("UPDATE position SET DESCRIPTION=:a WHERE ID=:b");
        $updateSQL->bindValue(':a', $_POST['DESCRIPTION'], PDO::PARAM_STR);
        $updateSQL->bindValue(':b', $_POST['ID'], PDO::PARAM_INT);
    $updateSQL->execute();
}
//------Query used to display list of inserted data in a table
$rs = $pro->prepare("SELECT * FROM position ORDER BY DESCRIPTION");
$rs->execute();
$row_rs = $rs->fetch(PDO::FETCH_ASSOC);
?>

我想知道上面代码是否有问题

1 个答案:

答案 0 :(得分:0)

对我来说看起来或多或少,你有任何问题吗?

您没有检查错误。如果有任何错误,prepare()和execute()都返回 false 。但是,如果您将PDO配置为在错误上抛出异常,那么您不必检查此返回值。

由于您正在绑定值,因此执行此操作可能会更快一些:

$updateSQL->execute([':a'=>$_POST'DESCRIPTION'], ':b'=>$_POST['ID']]);

您可以这样做,而不是为每个参数调用bindValue()。 PDO :: PARAM_STR和PDO :: PARAM_INT类型不执行任何操作。

$rs = $pro->prepare("SELECT * FROM position ORDER BY DESCRIPTION");

选择按描述排序似乎有点奇怪。不一定是错误,而不是我期望的排序顺序。