2015-10-18 4 views
0

Я новичок в PHP, и я следую руководству, которое получает информацию из таблицы базы данных mySQL по строке и выводит форму для создания новых строк таблицы. Почему-то я не могу понять, что не так с моим кодом? Страница пуста, когда я обновляю страницу, и я всегда смотрел на этот код. Кто-нибудь знает, что я делаю неправильно? Соединение с базой данных отлично, поскольку оно используется на другой странице, и я проверил.Как отправить данные в базу данных mySQL через форму PHP?

База данных mySQL, которую я имею, чрезвычайно проста: 1 таблица называется пользователем, которая имеет 5 столбцов (идентификатор, имя пользователя, firstName, lastName, title), причем идентификатор является уникальным полем.

<?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]); 
} 

Любая помощь будет супер-потрясающей!

+0

Этот учебник скорее из даты – Strawberry

+2

Примечание: Этот код уязвим для SQL-инъекций. Вы также не должны использовать устаревшую 'mysql'-lib. Вместо этого используйте 'mysqli' или' PDO'. – AbcAeffchen

ответ

1

Вы пытаетесь получить переменные с неправильным способом.

Пример

$username = get_post('username'); 

должен быть

$username = $_POST['username']; 

Вы должны сделать то же самое с тем же кодом, что вы пытаетесь получить пост переменные.

И запрос для вставки значения должны быть

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

спасибо, что гениально! :) –

Смежные вопросы