2010-05-17 7 views
5

Estoy tratando de crear una base de datos de activos de TI con una interfaz web.¿Qué hay de malo con mi sintaxis SQL aquí?

He reunido algunos datos de formularios usando POST así como una variable que ya se ha escrito en una cookie.

Esta es la primera vez que intento ingresar los datos en la base de datos.

Aquí está el código:

<?php 

//get data 
$id = $_POST['id']; 
$company = $_POST['company']; 
$location = $_POST['location']; 
$purchase_date = $_POST['purchase_date']; 
$purchase_order = $_POST['purchase_order']; 
$value = $_POST['value']; 
$type = $_COOKIE["type"]; 
$notes = $_POST['notes']; 

$manufacturer = $_POST['manufacturer']; 
$model = $_POST['model']; 
$warranty = $_POST['warranty']; 

//set cookies 
setcookie('id', $id); 
setcookie('company', $company); 
setcookie('location', $location); 
setcookie('purchase_date', $purchase_date); 
setcookie('purchase_order', $purchase_order); 
setcookie('value', $value); 
setcookie('type', $type); 
setcookie('notes', $notes); 

setcookie('manufacturer', $manufacturer); 
setcookie('model', $model); 
setcookie('warranty', $warranty); 

//checkdata 

//start database interactions 

// connect to mysql server and database "asset_db" 
mysql_connect("localhost", "asset_db", "asset_db") or die(mysql_error()); 
mysql_select_db("asset_db") or die(mysql_error()); 

// Insert a row of information into the table "asset" 
mysql_query("INSERT INTO asset 
(id, company, location, purchase_date, purchase_order, value, type, notes) VALUES('$id', '$company', '$location', '$purchase_date', $purchase_order', '$value', '$type', '$notes') ") 
or die(mysql_error()); 
echo "Asset Added"; 

// Insert a row of information into the table "server" 
mysql_query("INSERT INTO server 
(id, manufacturer, model, warranty) VALUES('$id', '$manufacturer', '$model', '$warranty') ") 
or die(mysql_error()); 
echo "Server Added"; 


//destination url 
//header("Location: verify_submit_server.php"); 

?> 

El error que consigo es: Usted tiene un error en su sintaxis SQL; revise el manual que corresponde a su versión del servidor MySQL para la sintaxis correcta para usar cerca de '', '678', 'Servidor', '789') 'en la línea 2

Esa información es solo información de prueba que estaba tratando de lanzar allí, pero parece ser el $ valor, $ tipo, $ notas.

Éstos son la tabla crear declaraciones si ayudan:

<?php 

// connect to mysql server and database "asset_db" 
mysql_connect("localhost", "asset_db", "asset_db") or die(mysql_error()); 
mysql_select_db("asset_db") or die(mysql_error()); 

// create asset table 
mysql_query("CREATE TABLE asset(
id VARCHAR(50) PRIMARY KEY, 
company VARCHAR(50), 
location VARCHAR(50), 
purchase_date VARCHAR(50), 
purchase_order VARCHAR(50), 
value VARCHAR(50), 
type VARCHAR(50), 
notes VARCHAR(200))") 
or die(mysql_error()); 
echo "Asset Table Created.</br />"; 

// create software table 
mysql_query("CREATE TABLE software(
id VARCHAR(50) PRIMARY KEY, 
software VARCHAR(50), 
license VARCHAR(50))") 
or die(mysql_error()); 
echo "Software Table Created.</br />"; 

// create laptop table 
mysql_query("CREATE TABLE laptop(
id VARCHAR(50) PRIMARY KEY, 
manufacturer VARCHAR(50), 
model VARCHAR(50), 
serial_number VARCHAR(50), 
esc VARCHAR(50), 
user VARCHAR(50), 
prev_user VARCHAR(50), 
warranty VARCHAR(50))") 
or die(mysql_error()); 
echo "Laptop Table Created.</br />"; 

// create desktop table 
mysql_query("CREATE TABLE desktop(
id VARCHAR(50) PRIMARY KEY, 
manufacturer VARCHAR(50), 
model VARCHAR(50), 
serial_number VARCHAR(50), 
esc VARCHAR(50), 
user VARCHAR(50), 
prev_user VARCHAR(50), 
warranty VARCHAR(50))") 
or die(mysql_error()); 
echo "Desktop Table Created.</br />"; 

// create server table 
mysql_query("CREATE TABLE server(
id VARCHAR(50) PRIMARY KEY, 
manufacturer VARCHAR(50), 
model VARCHAR(50), 
warranty VARCHAR(50))") 
or die(mysql_error()); 
echo "Server Table Created.</br />"; 

?> 

La ejecución de una pila LAMP de serie en Ubuntu 10.04.

Gracias.

+0

par de consejos secundarios: usar '$ _SESSION' en lugar de' setcookie() ', y escapar de sus ataques de datos de entrada tan unquoting puede no sucede –

+0

¿Podría elaborar un poco por favor? - Estamos empezando a aprender el servidor ubuntu, php y mysql, todo al mismo tiempo, y cualquier consejo sería apreciado. Gracias. –

Respuesta

2

se echa en falta una cotización de apertura, a continuación es la sección corregido:

mysql_query("INSERT INTO asset 
(id, company, location, purchase_date, purchase_order, value, type, notes) VALUES('$id', '$company', '$location', '$purchase_date', '$purchase_order', '$value', '$type', '$notes') ") 
or die(mysql_error()); 
echo "Asset Added"; 
3

se necesita un presupuesto comienzo 'antes $ PURCHASE_ORDER

3

te falta un PURCHASE_ORDER ' antes $.

3

Lo Galen said. Además, su código es vulnerable al SQL Injection, y generalmente tendrá problemas con los datos de entrada del usuario con comillas simples incrustadas.

Cuestiones relacionadas