2013-03-04 84 views
-2

我試圖將字符串發送到SQL數據庫時,通過PHP和SQL緩慢前進,並遇到了一個小錯誤。我想要做的是將一個用戶的詳細信息插入到一個表(當前有效)中,並將用戶名和5個空白條目一起發送到另一個表中。表格考試分數字段是用戶名,考試,考試1,考試2,考試3,考試4(這是我現在需要空白的這些考試領域)。插入到數據庫表中的PHP和SQL錯誤

的問題是,我收到以下消息: 解析錯誤:語法錯誤,在C意想不到T_CONSTANT_ENCAPSED_STRING:\ XAMPP \ htdocs中\ E-LearningWebsite \上線11 addcustomertodb.php(其線啓動$ QUERY1)

如果可能的話,任何人都可以解釋這個錯誤意味着什麼,我做錯了什麼?

<?php 
require "dbconn.php"; 

$username = $_GET['username']; 
$email = $_GET['email']; 
$pass = $_GET['password']; 

$query = "INSERT INTO customer VALUES ('".$username."','".$email."','".$pass."')"; 

$query1 = "INSERT INTO examscores VALUES ('".$username."','""','""','""','""','""')"; 

$results = mysql_query($query) or die (mysql_error()); 

$results1 = mysql_query($query1) or die (mysql_error()); 

?> 

親切的問候安迪

+0

**警告**您的代碼非常不安全,容易受到SQL注入攻擊! – 2013-03-04 15:17:15

+0

雖然這個問題對你很重要,但它對於本站來說太過本地化了。爲什麼不先使用搜索? – 2013-03-04 15:17:34

回答

4

變化

$query1 = "INSERT INTO examscores VALUES ('".$username."','""','""','""','""','""')"; 

$query1 = "INSERT INTO examscores VALUES ('".$username."','','','','','')"; 

PS。你正在邀請SQL注射,但這是一個不同的故事...

+0

謝謝你的時間,獲得一點額外的知識。非常感謝 - 安迪 – 2013-03-04 15:45:54

+0

快樂,以幫助安迪 – 2013-03-05 09:54:35

2

護目鏡!他們什麼都不做! sql injection vulnerabilities!這只是星期一!

爲什麼不

$query ="INSERT INTO customer VALUES ('$username', '$email', '$pass');"; 
$query1 = "INSERT INTO examscores VALUES ('$username', '', '', '', etc...);"; 

PHP會高興地取代$內""引用的字符串瓦爾你。絕對不需要你正在進行的所有協作。任何體面的代碼編輯器仍然會突出顯示你的變數。

+0

謝謝你的時間,獲得一點額外的知識。非常感謝 - 安迪 – 2013-03-04 15:46:43

1

迫切的問題導致錯誤是缺少從QUERY1 .■從雙層雙引號之間,(或者你應該只刪除雙雙引號乾脆。甚至不需要的列...)。

但也有在你的代碼方式更大的問題

  • SQL injection:你的代碼是脆弱的。您至少應該逃避來自用戶的變量...
  • mysql_* deprecation:從PHP 5.5起,這些函數將被棄用。使用Mysqli或ebtter PDO。
+0

謝謝你的時間,獲得一點額外的知識。非常感謝 - Andy – 2013-03-04 15:47:22

2

你缺少點來連接你的字符串

$query1 = "INSERT INTO examscores VALUES ('".$username."','"."','"."','"."','"."','"."')"; 

而且你不需要進一步的越多,你不要有不同的字符串 ,仍然需要包括每一列,如果你不把它們插入

+0

謝謝你的時間,獲得一點額外的知識。非常感謝 - 安迪 – 2013-03-04 15:46:15