PHP Postgresql通过webbrowser向数据库添加数据

PHP Postgresql通过webbrowser向数据库添加数据,php,postgresql,input,Php,Postgresql,Input,我正在研究如何通过基于php的动态网页向Postgresql数据库添加数据。在《PHP和Postgresql:高级web编程》(2002)一书中,我发现了一些设置内容管理系统的有趣代码(见下文)。当我在Firefox或Chrome中加载数据时,一切正常,但当我按下submit按钮时,字段中的数据不会添加到数据库中。什么也没发生。我想知道,这个代码是过时的(这本书是2002年的)还是有其他错误或遗漏?与数据库的连接似乎良好(无错误) “当我按下“提交”按钮时,字段中的数据不会添加到数据库中” 您正

我正在研究如何通过基于php的动态网页向Postgresql数据库添加数据。在《PHP和Postgresql:高级web编程》(2002)一书中,我发现了一些设置内容管理系统的有趣代码(见下文)。当我在Firefox或Chrome中加载数据时,一切正常,但当我按下submit按钮时,字段中的数据不会添加到数据库中。什么也没发生。我想知道,这个代码是过时的(这本书是2002年的)还是有其他错误或遗漏?与数据库的连接似乎良好(无错误)

“当我按下“提交”按钮时,字段中的数据不会添加到数据库中”

您正在使用
if($numberoffields)
检查是否提交了数据。
如果数据正在输入,您可能还要做的是放置一个
var\u转储($\u POST)在打开后的顶部
永远不要将“删除”操作作为简单的链接。你可能会活到后悔的地步:谢谢你的意见。根据PHP编码的调试工具,变量“tab”和“number\u of_fields”未定义:注意:未定义变量:第16行C:\Users\marko\Documents\NuSphere PhpED\Projects\detail.PHP中的number\u of_fields。这是正确的吗?注意:第29行的C:\Users\marko\Documents\NuSphere PhpED\Projects\detail.php中的未定义变量:tab无法检索表列表)
 <?php

    $data .= "<html>
            <body>
            <h1>Content Management Tool</h1>
            Edit the table <br>";

    # connecting to the database
    $dbh = pg_connect("dbname=postgres user=postgres host=localhost password=");
    if      (!$dbh)
    {
            die ("cannot connect to database<br>\n");
    }
    # checking for insert
    if      ($number_of_fields)
    {
            $sql = "INSERT INTO $tab VALUES (";
            for     ($i = 1; $i < $number_of_fields - 1; $i++)
            {
                    $sql .= "'${$i}', ";
            }
            $max = $number_of_fields - 1;
            $sql .= "'${$max}')";
            $ret = pg_query($dbh, $sql) or
                    die ("cannot execute UPDATE operation<br>\n");
    }
    # retrieving a list of all tables in the database
    $sql = "SELECT oid, * FROM message";
    $res = @pg_query($dbh, $sql) or
            die ("cannot retrieve list of tables");

    # displaying list
    $data .= "<br><b>Details:</b><br>\n";
    $rows = pg_num_rows($res);
    $fields = pg_num_fields($res);

    # displaying header of table
    $table .= "<table border=3><tr>\n";
    for     ($i = 1; $i < $fields; $i++)
    {
            $table .= "<th>".
            pg_field_name($res, $i)."</th>";
    }
    $data .= $table."<th>action</th>\n";
    $data .= "</tr>\n";

    # displaying data
    $data .= '<form action="detail.php" method="post">';

    for     ($i = 0; $i < $rows; $i++)
    {
            $data .= "<tr>";
            $line = pg_fetch_row($res, $i);

            for     ($j = 1; $j < $fields; $j++)
            {
                    $data .= "<td>";
                    $data .= $line[$j];
                    $data .= "</td>";
            }
            $data .= '<td><a href="action.php?act=delete&oid='.
                    $line[0].'&tab='.$tab.'">Delete</a> </td> ';
            $data .= "</tr>\n";
    }
    $data .= "</table>\n";
    $data .= "<br><b>Add data to the table</b><br>\n";

    # displaying HTML for inserting data
    $data .= $table;
    $data .= "<tr>";
    for     ($i = 1; $i < $fields; $i++)
    {
            $data .= "<td>".
                    '<input type="text" name="'.$i.'"></td>';
    }
    $data .= "</tr>\n";
    $data .= "</table>\n";
    $data .= '<input type="hidden" name="number_of_fields" '.
            "value=\"$fields\"><br><br>";
    $data .= '<input type="hidden" name="tab" value="'.$tab.'">';
    $data .= '<input type="submit" name="submit" >';
    $data .= "</form>\n";

    echo $data, $tail;
 ?>
CREATE TABLE message
(
id integer,
tstamp timestamp with time zone DEFAULT now(),
who text,
message text
)
WITH (
OIDS=TRUE
);
ALTER TABLE message
OWNER TO postgres;
GRANT ALL ON TABLE message TO postgres;
GRANT ALL ON TABLE message TO public;
            $sql = "INSERT INTO $tab VALUES (";
            for     ($i = 1; $i < $number_of_fields - 1; $i++)
            {
                    $sql .= "'${$i}', "; // <--- $_POST[$i] ???
            }
            $max = $number_of_fields - 1;
            $sql .= "'${$max}')";

            var_dump($sql); // <--- see, if SQL statement contains your data