2014-03-28 43 views
0

我嘗試創建一個簡單的註冊系統。然而,我發現了一個問題,我插入數據庫的所有數據都變成了數字。 當我通過php插入這些數據時,不是命令提示符或phpmyadmin。例如,我在表單中輸入名字,姓氏等,表中的值是數字1.我不知道這個數字來自哪裏。我瀏覽和瀏覽,我不知道什麼是關鍵字。請參閱下面的代碼並給出建議或明確的解釋。所有字符串或字符在mysql列中都變爲數字1

//TABLE STRUCTURE 
user_id INT (10) NOT NULL AUTO_INCREMENT, 
fname VARCHAR (100) NOT NULL, 
lname VARCHAR (100) NOT NULL, 
username VARCHAR (100) NOT NULL, 
city VARCHAR (150) NOT NULL, 
access timestamp (15) NOT NULL, 
primary key (user_id); 

//DB CONNECTION 
$host = "localhost"; 
$user = "root"; 
$pass = ""; 
$dbas = "user"; 
$conn = mysql_connect($host, $user, $pass) or die(mysql_error("not connected")); 
$data = mysql_select_db($dbas, $conn) or die(mysql_error("couldn't find")); 

//FORM PROCCESS --> proccess.php 
$id = isset($_POST['user_id']); 
$fname = mysql_real_escape_string(isset($_POST['fname'])); 
$lname = mysql_real_escape_string(isset($_POST['lname'])); 
$username = mysql_real_escape_string(isset($_POST['username'])); 
$city = mysql_real_escape_string(isset($_POST['city'])); 
$access = date("m-d-y"); 

if(isset($_POST['submit']) !== '') 
{ 
    if($id == '' && $fname == '' && $lname == '' && $username == '' && $city == '' && $access == ''){ 
     echo "please fill empty"; 
    } else { 
     $sql = mysql_query("INSERT INTO user (user_id, fname, lname, username, city, access) VALUES (null, '".$fname."', '".$lname."', '".$username."', '".$city."', '".$access."')"); 

     if($sql) 
     { 
      echo "success"; 
     } 
    } 
} 

//RETRIEVE DATA 
$query = "SELECT * FROM user"; 
$result = mysql_query($query); 
while($getit = mysql_fetch_array($result)) 
{ 
    echo "<table>"; 
    echo "<tr>"; 
    echo "<td>" .$getit['fname']. "<td/>"; 
    echo "</tr>"; 
    echo "</table>"; 
} 

// FORM STRUCTURE 
<form action="proccess.php" method="post"> 
    <input type="hidden" name="user_id"> 
    <input type="hidden" name="access"> 
    <input type="text" name="fname"> 
    <input type="text" name="lname"> 
    <input type="text" name="username"> 
    <input type="text" name="city"> 
    <button type="submit" name="submit">REGISTER</button> 
</form> 

在此先感謝

+0

沒有爲'mysql_ **沒有更多的支撐** *'的功能,它們是[**正式棄用**](https://wiki.php.net/rfc/mysql_deprecation)**,不再維持**,將來會[**刪除**](http://php.net/manual/en/function.mysql-connect.php#warning)。您應該使用[PDO](http://php.net/pdo)或[MySQLi](http://php.net/mysqli)更新您的代碼,以確保您的項目未來的功能。 –

+0

這意味着我使用的代碼不再有效嗎?那麼,數字1從哪裏來? – life4learn

+0

不,這並不意味着。這意味着'mysql_ *'函數已被棄用,您不應該再使用它了。這與實際問題無關。 '1'是'isset()'返回的內容。它與「TRUE」相同。同樣,'0'表示'FALSE'。 –

回答

5

您的代碼如下:

$fname = mysql_real_escape_string(isset($_POST['fname'])); 

isset()返回一個true或false,而不是本身的實際價值。所以基本上,你只是做:

$fname = mysql_real_escape_string(1); 

documentation for isset()

返回值

返回TRUE 如果變種存在,並且具有比其他NULL值, 否則 否則。

+0

是的,如果你想在分配它們之前檢查這些POST變量是否應該這樣做:if(isset($ _ POST ['fname'])){$ fname = mysql_real_escape_string($ _ POST ['fname']); } –

+0

嗨,我離開'isset()'並嘗試使用三元運算符,併成功。感謝大家。祝大家好運 – life4learn

0
$city = mysql_real_escape_string(isset($_POST['city'])); 

其分解 -

逃逸字符串,使其安全(R)

我們是否有崗位城市

這對於返回1是0沒有。

,但你實際上並沒有得到價值。

$fname = mysql_real_escape_string(isset($_POST['fname']) == 1 ? $_POST['fname'] : "")); 

這將檢查是否設置 - 如果它設置$城市的崗位價值,否則輸入一個空值(?就像if語句:就像一個人)

接受Abhik Chakraborty答案 - 不想狙擊他只是想告訴你如何解決它!

+0

嗨,@格拉漢姆,謝謝你的建議。我使用三元運算符,但沒有'== 1'和我的問題解決了 – life4learn

+0

是的 - 我總是走基礎(ish) - 完全正確,沒有== 1只是爲了顯示邏輯!很高興幫助 - 祝你好運! –

相關問題