2016-01-17 75 views
1
<?php 

$fname= $_REQUEST['firstname']; 
$lname= $_REQUEST['lastname']; 
$email= $_REQUEST['email']; 
$pass = $_REQUEST['password']; 

$dbhost = 'localhost'; 
$dbuser = 'root'; 
$dbpass = ''; 
$conn = mysql_connect($dbhost, $dbuser, $dbpass); 
if(! $conn) 
{ 
    die('Could not connect '); 
} 
$ins1 = "INSERT into signup values('$fname' , '$lname', '$email','$pass')"; 


$select = mysql_select_db('ait', $conn); 
if(! $select) 
{ 
    die("<h2> incorrect input <h2>".mysql_error()); 
    header('location:index.php'); 

} 

$in1 = mysql_query($ins1); 
if (!$in1) 
{ 
    die("<h2> incorrect input <h2>".mysql_error()); 
    header('location:signed.php'); 
} 


mysql_close($conn); 
header('location:signed.php'); 
exit; 
?> 

我正在註冊表單並將其添加到數據庫中但我得到此錯誤「錯誤的輸入列計數不匹配值計數在第1行「。我沒有從這個代碼插入id,因爲它是自動增量。不正確的輸入列計數與第1行的值計數不匹配

+0

顯示'註冊表'結構。 –

+1

嘗試在查詢中明確指定列名稱。 'INSERT INTO table(column1,column2)VALUES(value1,value2)'此外,請注意,您的代碼* *開放** * SQL注入**。您將用戶輸入視爲代碼並執行用戶向您發送的任何內容。 – David

+0

我是PHP新手,仍在學習。所以我需要了解更多關於SQL注入的知識。 – AshirogiMuto

回答

0

在查詢中明確記下列的名稱。

INSERT into signup(first_name,last_name,email,password) 
values('$fname' , '$lname', '$email','$pass') 

看看SQL注入。像這樣傳遞參數不是一種安全的方法。

0

如果id是自動增量(這是你跳過只列在表中的第一個),用途:

$sql = "INSERT into signup values (null, '$fname' , '$lname', '$email','$pass')"; 

這樣,你讓mysql填寫id的值,但你仍然需要指定它。

另一種方法是使用:

$sql = "INSERT into signup (col1, col2, col3, col4) values ('$fname' , '$lname', '$email','$pass')"; 

如果你的實際列名稱替換col*

+0

您是怎麼知道只有1列丟失而且可以爲空的? –

+0

因爲Op說:「我不是從這個代碼中插入id,因爲它是自動遞增的。」 –

+0

通常,id列是第一個添加到表中的列。 –

相關問題