Необъяснимые нулевые значения в PHP MySQL - как вставить все значения в одну запись? - PullRequest
0 голосов
/ 06 декабря 2010

У меня есть эта страница формы HTML:

form1.html

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
    "http://www.w3.org/TR/html4/strict.dtd"
    >
<html lang="en">
<head>
    <title>Insert Your Details</title>
</head>
<body>
    <h3> Insert Your Name</h3>
    <form action="form1.php" method="post">
    First Name: <input type="text" name="fname"><br>
       Last Name: <input type="text" name="lname"><br>
    E-mail:  <input type="text" name="mail"><br>
            <input type="Submit" value="Submit" name="Submit">
    </form>
</body>
</html>

, которая пересылает этот PHP-скрипт для обработки формы:

form1.php

<?php
$connection = mysql_connect("localhost","root","")
or die ("Couldn't Connect To Server");
$db = mysql_select_db("db1", $connection)
or die ("Couldn't Select Database");
$query = "CREATE TABLE IF NOT EXISTS table1 (Name VARCHAR(20))";
$result = mysql_query($query)
or die ("Query Failed: " . mysql_error());
$query = "INSERT INTO table1 (fname) VALUES ('".$_POST[fname]."')"; 
$result = mysql_query($query)
or die ("Query Failed: " . mysql_error());
$query = "INSERT INTO table1 (lname) VALUES ('".$_POST[lname]."')"; 
$result = mysql_query($query)
or die ("Query Failed: " . mysql_error());
$query = "INSERT INTO table1 (mail) VALUES ('".$_POST[mail]."')"; 
$result = mysql_query($query)
or die ("Query Failed: " . mysql_error());
$query = "SELECT * FROM table1";
$result = mysql_query($query)
or die ("Query Failed: " . mysql_error());
    echo "<TABLE BORDER = '1'>";
    echo "<TR>";
    echo "<TH>First Name</TH>";
    echo "</TR>";    
while ($row = mysql_fetch_array($result))
     {
echo "<TR>";
echo "<TD>", $row['fname'], "</TD><TD>",
$row['lname'], "</TD><TD>",
$row['mail'], "</TD>";
echo "</TR>";  
     }
    echo "</TABLE>";
    mysql_close($connection);
?>

Теперь, по какой-то причине, когда я вставляю эти значения:

First Name: Wide
Last Name: Blade

Я получаю множество значений NULL в таблице MySQL.

Итак, мой вопрос: как мне вставить все эти значения в одну запись, чтобы я не получил эти пустые записи в таблице?

1 Ответ

2 голосов
/ 06 декабря 2010

insert добавляет новую запись (строку) в базу данных - вы хотите выполнить оператор вставки только один раз.

INSERT INTO table1(fname, lname, mail) VALUES ($fname, $lname, $mail);

UPDATE: Кроме того, вам нужно защитить от внедрения SQL, либо путем экранирования вводаили используя подготовленные заявления.

...