如何从mysql将数据加载到文本框中

时间:2012-02-28 10:34:30

标签: php mysql html textbox inputbox

我有(html)

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);

4 个答案:

答案 0 :(得分: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 :(得分: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'");

或者,您可以使用参数化查询。

答案 2 :(得分: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>";

答案 3 :(得分:1)

正如您所说,您希望根据first_name获取last_name,您的查询应该类似于

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

尝试在字符串中连接变量,因为它比替换更快。