2011-04-30 329 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 . "')";