【问题标题】:How do I load data to textbox from mysql如何从 mysql 将数据加载到文本框
【发布时间】:2012-02-28 10:34:30
【问题描述】:

我有 (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);

【问题讨论】:

  • 小心! SQL 注入警报。另外,你在哪里将它插入到数据库中?
  • 了解prepared statements,它更干净,更安全的google“php mysqlprepared statements”
  • “不起作用”具体是什么意思?你得到什么错误?

标签: php mysql html textbox inputbox


【解决方案1】:

您在插入的值周围缺少引号。使用

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

【讨论】:

    【解决方案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】:

      希望对你有帮助

      //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>";
      

      【讨论】:

      • 我已经稍微修改了这段代码,但它正在工作。谢谢
      【解决方案4】:

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-10-20
        • 1970-01-01
        • 2019-03-07
        • 1970-01-01
        • 1970-01-01
        • 2015-06-25
        • 2021-12-31
        • 1970-01-01
        相关资源
        最近更新 更多