0

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

  • Bloc php:我在其中放置查询
  • 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);
?>

我想知道上面的代码有没有问题

4

1 回答 1

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");

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

于 2013-11-07T20:49:15.563 回答