2012-02-28 28 views
0

數據加載到文本框我有(HTML)如何從MySQL

input type="text" name="input" 
textarea name="output" 

接下來,我有一些表格,姓氏和名字。當我在輸入區域插入名字時,我想在輸出區域顯示姓氏。 下面的PHP查詢不起作用。

$input = $_POST['input']; 
$select = mysql_query("SELECT first_name FROM table WHERE input=$input"); 
$req = mysql_fetch_array($select); 
+2

小心! SQL注入警報。另外,你將它插入數據庫的位置? – 2012-02-28 10:35:53

+0

學習準備好的語句,其更乾淨,更安全的谷歌「PHP的MySQL準備語句」 – user1015314 2012-02-28 10:41:19

+1

你是什麼意思的「不工作」?你會得到什麼錯誤? – 2012-02-28 10:41:43

回答

2

存在一些問題。

首先,您的表格可能不叫table,但是別的。如果它實際上出於某種原因被稱爲table那麼你需要將它包圍起來,因爲table是一個保留字。但它會是很多更好更改名稱不是reserved word

其次,您也沒有正確地轉義用戶輸入數據。你可以考慮使用mysql_real_escape_string來達到這個目的。

$input = mysql_real_escape_string($_POST['input']); 

最後,您應該引用在SQL字符串中的用戶文本:

$select = mysql_query("SELECT first_name FROM `table` WHERE input='$input'"); 

或者,您也可以使用參數化查詢。

3

您正在輸入的值缺少引號。使用

input='$input' 

你沒有在你的查詢中做任何錯誤檢查,所以在這種情況下,事情將會默默地中斷。要進行適當的錯誤檢查並獲取詳細消息,請查看manual on mysql_query()或此reference question.

此外,您顯示的代碼易受SQL injection的影響。對您插入的所有字符串數據使用適當的衛生方法(在本例中爲mysql_real_escape_string()),或切換到PDO和準備好的語句。

使用當前的代碼示例:

# Escape string input 
$input = mysql_real_escape_string($_POST['input']); 

# Run query 
$select = mysql_query("SELECT first_name FROM table WHERE input='$input'"); 

# Check for errors 
if (!$select) 
{ trigger_error("mySQL error: ".mysql_error()); 
    die(); 
} 
+1

+1,這是很好的照顧:) – Sarfraz 2012-02-28 10:44:30

1

希望這有助於

//PHP 
$firstname=''; 
$lastname=''; 

if(isset($_POST['go'])) 
{ 
    $firstname=$_POST['firstname']; 
    $records = mysql_query("SELECT last_name FROM 
    table WHERE firstname='$firstname'"); 

    if(mysql_num_rows ==1) 
    { 
     while($row=mysql_fetch_array($records)) 
     { 
      $lastname=$row['last_name']; 
     } 
    } 
} 

//HTML 
echo"<form method='post' > 
echo" <input type='text' name='firstname' value='$firstname' />"; 
echo"<input type='submit' value='Go' /> "; 
echo" <input type="text" name='lastname' value='$lastname' />"; 
echo"</form>"; 
+0

我已經修改了一些代碼,但它工作。謝謝 – ssuperczynski 2012-02-28 11:51:55

1

,你說你要根據FIRST_NAME您的查詢應該是這個樣子

$input = $_POST['input']; 
$select = mysql_query("SELECT last_name FROM table WHERE first_name = '".$input."'"); 
$req = mysql_fetch_array($select); 
獲得姓氏

嘗試在字符串中連接變量,因爲它比替換更快。