2011-04-30 330 views
1

我知道这对大多数人来说可能很容易,但我刚开始学习PHP和MySQL,而且我没有编程背景,所以请耐心等待。我试图将以下内容插入到数据库中。插入数据到MySQL

错误消息:

Parse error: syntax error, unexpected T_VARIABLE in C:\wamp\www\coninsert.php on line 17

PHP代码:

<?php 
$db = mysql_connect("localhost", "algo","*****"); 
if (!$db) 
    { 
    die('Could not connect: ' . mysql_error()); 
    } 
mysql_select_db("reno",$db); 

$name=$_POST['nom']; 
$address=$_POST['adresse']; 
$city=$_POST['ville']; 
$zip=$_POST['codepostal']; 
$phone=$_POST['numtel']; 
$email=$_POST['email']; 
$travaux=$_POST['travaux'] 

$sql = "INSERT INTO piste(name, address, ville, zip, phone, email, travaux) VALUES ("$name","$address","$city","$zip","$phone","$email","$travaux")"; 
mysql_query($sql) 

mysql_close($db) 
?> 

谢谢!

+1

示例代码是易受[SQL注入](http://unixwiz.net/techtips/sql-injection.html),这是一个很严重的[安全风险](http://bobby-tables.com/)。为了解决这个问题,从过时的mysql扩展名切换到[PDO](http://php.net/PDO)并使用[prepared statements](http://www.php.net/PDO.prepared-statements)。如果您需要PDO教程,请尝试[“用PHP和PDO编写MySQL脚本”](http://www.kitebird.com/articles/php-pdo.html)。您保存的网站可能只是您自己的网站。 – outis 2011-04-30 18:57:11

+1

你应该学习一些[PHP 101:PHP的绝对初学者](http://devzone.zend.com/article/627)。 – 2011-04-30 18:59:42

+0

另外,数据库连接应该由在其他脚本中使用的脚本中定义的函数或类来创建。通过这种方式,数据库凭证不会分散,这使得它们更容易保护。这也使得您的数据库连接代码不易受到拼写错误的影响。有关本网站的最新示例,请参阅[PHP,变量作用域问题](http://stackoverflow.com/questions/5769198/php-variable-scope-question/5769304#5769304)。但是,不要将自己限制在那一页上;在网上搜索更多。 – outis 2011-04-30 19:00:55

回答

3

线:

$travaux=$_POST['travaux'] 
mysql_query($sql) 
mysql_close($db) 

你缺少分号。


更新.. AAH是的,且有

$sql = "INSERT INTO piste(name, address, ville, zip, phone, email, travaux) 
     VALUES "$name","$address","$city","$zip","$phone","$email","$travaux")"; 

它应该是:

$sql = "INSERT INTO piste(name, address, ville, zip, phone, email, travaux) 
     VALUES ('$name','$address','$city','$zip','$phone','$email','$travaux')"; 

并请,加上对SQL注入一些保护,因为权利不存在无。


UPDATE2:

线路是这样的:$email=$_POST['email'];
应该像这样:
$email= isset($_POST['email'])? mysql_real_escape_string($_POST['email']) : '';

+0

Paldies!干得好:) – Ishikawa 2011-04-30 19:36:49

0

您需要将文本值单引号: ' “$名称”' VALUES( ,'。。$ address。'','“。$ city。”','。。$ zip。“'....

0

更改此行:

$sql = "INSERT INTO piste(name, address, ville, zip, phone, email, travaux) VALUES ("$name","$address","$city","$zip","$phone","$email","$travaux")"; 

到:

$sql = "INSERT INTO piste(name, address, ville, zip, phone, email, travaux) VALUES ('" . $name . "','" . $address . "','" . $city . "','" . $zip . "','" . $phone . "','" . $email . "','" . $travaux . "')";