如何通过PHP表单将数据发布到mySQL数据库?

时间:2015-10-18 21:42:17

标签: php mysql database

我是PHP的新手,我正在学习一个教程,该教程通过行从mySQL数据库表中获取信息,并输出一个表单来创建新的表行。出于某种原因,我无法弄清楚我的代码有什么问题?刷新页面时页面为空白,我一直在盯着这段代码。有谁知道我做错了什么?数据库连接很好,因为它在另一个页面上使用,我已经检查过。

我拥有的mySQL数据库非常简单,有一个名为users的表有5列(ID,username,firstName,lastName,title),ID是唯一字段。

<?php // sqltest.php
require_once 'login.php';
$db_server = mysql_connect($db_hostname, $db_username, $db_password);

if (!$db_server) die("Unable to connect to MySQL: " . mysql_error());
    mysql_select_db($db_database, $db_server)
    or die("Unable to select database: " . mysql_error());

if (isset($_POST['delete']) && isset($_POST['ID']))
{
    $id = get_post('ID');
    $query = "DELETE FROM users WHERE ID='$id'";
    if (!mysql_query($query, $db_server))
    echo "DELETE failed: $query<br>" .
    mysql_error() . "<br><br>";
}

if (isset($_POST['ID']) &&
    isset($_POST['username']) &&
    isset($_POST['firstName']) &&
    isset($_POST['lastName']) &&
    isset($_POST['title']))
{
    $id = get_post('ID');
    $username = get_post('username');
    $firstName = get_post('firstName');
    $lastName = get_post('lastName');
    $title = get_post('title');
    $query = "INSERT INTO users VALUES" .
    "('$id', '$username', '$firstName', '$lastName', '$title')";

    if (!mysql_query($query, $db_server))
        echo "INSERT failed: $query<br>" .
        mysql_error() . "<br><br>";
}

echo <<<_END
<form action="sqltest.php" method="post"><pre>
ID <input type="text" name="ID">
username <input type="text" name="username">
firstName <input type="text" name="firstName">
lastName <input type="text" name="lastName">
title <input type="text" name="title">
<input type="submit" value="ADD RECORD">
</pre></form>
_END;

$query = "SELECT * FROM users";

$result = mysql_query($query);

if (!$result) die ("Database access failed: " . mysql_error());
    $rows = mysql_num_rows($result);
    for ($j = 0 ; $j < $rows ; ++$j)
{
    $row = mysql_fetch_row($result);
    echo <<<_END
    <pre>
    ID $row[0]
    username $row[1]
    firstName $row[2]
    lastName $row[3]
    title $row[4]
    </pre>
    <form action="sqltest.php" method="post">
    <input type="hidden" name="delete" value="yes">
    <input type="hidden" name="title" value="$row[4]">
    <input type="submit" value="DELETE RECORD"></form>
    _END;
}

mysql_close($db_server);
function get_post($var)
{
    return mysql_real_escape_string($_POST[$var]);
}

任何帮助都会超级棒!

1 个答案:

答案 0 :(得分:1)

您正试图以错误的方式检索变量。

实施例

$username = get_post('username');

应该是

$username = $_POST['username'];

您应该使用与尝试检索发布变量相同的代码执行相同的操作。

插入值的查询应为

$query = "INSERT INTO users VALUES('".$id."', '".$username."', '".$firstName."', '".$lastName."', '".$title."')";