2014-03-27 71 views
0

我正在爲學校作業進行簡單註冊/表單。 由於某些原因,我無法在當前表格中創建一個新列。 $ _Get的所有信息都正常顯示。我想象它是一個語法錯誤,我沒有看到。任何幫助都會很棒。謝謝。插入到MySQL數據庫中,查詢未運行

if ($_GET['action'] == "create") 

    { 

     print('test'); 
     // ----------------------- 
     // PERFORM DATABASE UPDATE 
     $fn = $_GET['fn']; 
     $ln = $_GET['ln']; 
     $id = $_GET['id']; 
     $user = $_GET['user']; 
     $tel = $_GET['tel_num']; 
     $email = $_GET['email']; 
     $bday = $_GET['birthday']; 
     $password = $_GET['password']; 
     $address = $_GET['address']; 

     print('test1'); 

     mysql_select_db("advweb2"); 


     $sql="INSERT INTO `account` (`user`, `password` , `email` , `first_name` , `last_name` , `address` , `tel_num` , `birthday`) 
     VALUES ('$user', '$password', '$email', '$fn', '$ln', '$address', '$tel', '$bday')"; 
     print_r($sql); 



     print("<div style='color:green'>update successful</div>"); 

     // ----------------------- 

     $action = "signin"; 
    } 
+0

您需要將$ sql變量包裝在一個mysql_query()函數中,以便它實際運行查詢,此時您只需將其打印出來並不實際處理它。這是,只要你已經設置了正確的值連接到數據庫,因爲你的代碼中沒有證據。 – Karl

+5

當我想要查詢運行時,我通常會發現實際運行查詢很有用。 :I – Sammitch

+0

+1那@Sammitch,哈哈。基本上,你需要執行查詢。 – iamsleepy

回答

0

您需要執行查詢。

您應該使用MySQLi或PDO作爲詳細的here,因爲不推薦使用mysql_query。

實例與庫MySQLi:

<?php 
$mysqli = new mysqli("localhost", "my_user", "my_password", "world"); 

$stmt = $mysqli->prepare(
    "INSERT INTO `account` (`user`, `password` , `email` , `first_name` , `last_name` , `address` , `tel_num` , `birthday`) 
    VALUES (?, ?, ?, ?, ?, ?, ?, ?)" 
); 
$stmt->bind_param('ssssssss', $user, $password, $email, $fn, $ln, $address, $tel, $bday); 
$stmt->execute(); 

/* ... */ 

$stmt->close() 
?> 

你需要確保你插入數據庫,以防止SQL注入之前清理你$_GET變量。好閱讀:how to prevent SQL injection

+0

這工作完美。是的,我忘了運行查詢。哎呀。這是學校的原因。 – RoosterSauce

+0

當使用'mysqli'時,您應該使用參數化查詢和['bind_param'](http://php.net/manual/en/mysqli-stmt.bind-param.php)將用戶數據添加到您的查詢中。 – tadman

0

,請不要使用的mysql_query,切換到庫MySQLi或PDO來代替。

$dbh = new PDO("mysql:host=$host;dbname=$dbname", $user, $pass); 

$stmt = $dbh->prepare("INSERT INTO REGISTRY (name, value) VALUES (:name, :value)"); 
$stmt->bindParam(':name', $name); 
$stmt->bindParam(':value', $value); 


$name = 'one'; 
$value = 1; 
$stmt->execute(); 

$dbh = null; 
0

使用的mysqli或PDO被別人當作解釋的,但如果你堅持執行查詢是這樣的:

$sql=mysql_query("INSERT INTO `account` (`user`, `password` , `email` , `first_name` , `last_name` , `address` , `tel_num` , `birthday`) 
     VALUES ('$user', '$password', '$email', '$fn', '$ln', '$address', '$tel', '$bday')"); 

因爲您準備查詢,並將其賦值給變量,但對於錯過來執行它。