如何通过webform向db添加数据

时间:2014-12-17 02:17:32

标签: mysql webforms

我是PHP和MySQL新手。

我使用基本代码将条目添加到http://smallbusiness.chron.com/transfer-data-form-database-46976.html的数据库中,然后执行以下操作:

DB:

CREATE TABLE IF NOT EXISTS `autos` (
  `CIID` int(11) NOT NULL AUTO_INCREMENT,
  `Anio` text,
  `Marca` text,
  `Tipo` text,
  `Modelo` text,
  `Color` text,
  `Descripcion` text,

  PRIMARY KEY (`CIID`)
) ENGINE=MyISAM;

INSERT INTO `autos` (`CIID`, `Anio`, `Marca`, `Tipo`, `Modelo`, `Color`, `Descripcion`)  VALUES

('1', '2008', 'VW', 'Auto', 'Jetta', 'Azul', ''),
('2', '2008', 'Chevrolet', 'Auto', 'Cobalt', 'Blanco', ''),
('3', '2006', 'Chevrolet', 'Auto', 'Cobalt', 'Gris', ''),
('4', '2001', 'Chevrolet', 'Suv', 'Avalanche', 'Azul', ''),
('5', '1999', 'Chevrolet', 'Auto', 'Camaro', 'Azul', '');

的index.php:

<html>
<head>
    <meta charset="utf-8">
</head>
<body>

<b>Añadir Registro:</b>
<form action=add.php method=”post”>
<table border=0>
<tr><td>
    Año
</td><td>
    <input type="text" name="Anio[]" size="20">
</td></tr><tr><td valign=top>
    Marca
</td><td valign=top>
    <select name="Marca[]" class="dropdown">
        <option value="">Selecciona Marca</option>
        <option value=""></option>
        <option value="Acura">Acura</option>
        <option value="Aston Martin">Aston Martin</option>
        <option value="Audi">Audi</option>
        <option value="Bentley">Bentley</option>
        ...
    </select>
</td></tr><tr><td valign=top>
    Tipo
</td><td valign=top>
    <select name="Tipo[]" class="dropdown">
        <option value="">Selecciona Tipo</option>
        <option value=""></option>
        <option value="Moto">Moto</option>
        <option value="Auto">Auto</option>
        <option value="Minivan">Minivan</option>
        ...
    </select>
</td></tr><tr><td valign=top>
    Modelo
</td><td valign=top>
    <input type="text" name="Modelo[]" size="20">
</td></tr><tr><td valign=top>
    Color
</td><td valign=top>
    <input type="text" name="Color[]" size="20">
</td></tr><tr><td valign=top>
    Descripción
</td><td valign=top>
    <textarea name="Descripcion[]" rows="10" cols="40"></textarea>
</td></tr><tr><td valign=top>

</td><td valign=top>
    <input type=submit value="Añadir">
</form>
</td></tr>
</table>

</body>
</html>

add.php:

<?php
     $connect = mysql_connect(“localhost”, “high_pipo”, “*****”);
     if (!connect) { die('Connection Failed: ' . mysql_error());
     { mysql_select_db(“high_pipo”, $connect);
     $user_info = “INSERT INTO `autos` (CIID, Anio, Marca, Tipo, Modelo, Color, Descripcion) VALUES ('75', '$_POST[Anio]',
 '$_POST[Marca]', '$_POST[Tipo]', '$_POST[Modelo]', '$_POST[Color]',
 '$_POST[Descripcion]')”;
     if (!mysql_query($user_info, $connect)) { die('Error: ' . mysql_error());
     }
     echo “Your information was added to the database.”;
     mysql_close($connect); ?>

我收到以下错误:第5行的/home/high/public_html/masautos/administracion/add.php中出现错误:解析错误:语法错误,意外的'INTO'(T_STRING)

我该如何解决这个问题? 另外,如何在add.php或index.php上将第一个字段(CIID)定义为自动增量,如在db上标记的那样?

1 个答案:

答案 0 :(得分:0)

如果在您的数据库中ciid被标记为自动增量,那么您在插入中不需要它。 也尝试不再使用mysql_query。准备好的陈述是一种更好的方法。

$dbh = new PDO('mysql:host=localhost;dbname=your_database_name', $user, $pass);
$stmt = $dbh->prepare("INSERT INTO `autos` (`Anio`, `Marca`, `Tipo`, `Modelo`, `Color`, `Descripcion`) VALUES (:anio, :marca, :tipo, :modelo, :color, :descripcion)");
$stmt->bindParam(':anio', $_POST['Anio']);
$stmt->bindParam(':marca', $_POST['Marca']);
$stmt->bindParam(':tipo', $_POST['Tipo']);
$stmt->bindParam(':modelo', $_POST['Modelo']);
$stmt->bindParam(':color', $_POST['Color']);
$stmt->bindParam(':descripcion', $_POST['Descripcion']);
$stmt->execute();

如果您在此表的1个或2个或更多字段中使用索引或主键,则可以在重复键更新时使用insert ...,如本教程http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html所示 如果要在查询中保留错误日志,则可以将它们包含在try-catch语句中,并且可以将错误写入应用程序根目录中的txt文件。 关闭数据库连接使用

$dbh = null;