【问题标题】:Pass hidden value from database when Using autocomplete feature使用自动完成功能时从数据库中传递隐藏值
【发布时间】:2013-10-03 07:56:07
【问题描述】:

我正在使用自动完成功能来显示数据库中的值。 文件如下:

自动完成.php

  <?php
    require_once "../includes/conf.php";
$q=$_GET['q'];
$my_data=mysql_real_escape_string($q);
//$mysqli=mysql_connect('localhost','root','','autofield') or die("Database Error");
$sql="SELECT vName,id FROM employee WHERE vName LIKE '%$my_data%' ORDER BY vName";
$result = mysql_query($sql) or die(mysql_error());

if($result)
{
    while($row=mysql_fetch_array($result))
    {
        echo $row['vName']." </n>".$row['id'];

    }
}
  ?>

上述文件返回将在文本文件中显示的名称。除此之外,我想将 id 作为隐藏字段传递,以便我可以在 php 中处理数据

我应该怎么做?

【问题讨论】:

    标签: javascript php jquery autocomplete


    【解决方案1】:

    您可以为此目的使用隐藏的输入类型。

    <input type="hidden" value=".$row['id']."/>
    

    【讨论】:

    • 在此之前尝试print_r($row); 看看如何填充数组
    • 是的,直接在上面的代码中。但是你需要回显输入标签!!
    • 那我如何在其他页面中检索它?
    • 您将获得存储在数据库中的值。您可以在任何页面上从数据库中检索该值。
    【解决方案2】:

    试试这个:

    $array = array();
    while($row=mysql_fetch_array($result))
    {
        array_push($array ,array("value"=>$row['id'],"label"=>$row['vName']));
    }
    

    在 jquery 代码中:

    terms.push( ui.item.label );
    $( "#hidtextboxid" ).val( ui.item.value);
    

    确保在代码中创建一个隐藏字段。

    检查这个: how to pass hidden id using json in jquery ui autocomplete?

    【讨论】:

      【解决方案3】:

      我不想用mysql_query 回答你的问题,原因有两个:

      1. mysql_query 官方状态为Deprecated:mysql 扩展已弃用,未来将被移除:改用mysqli 或PDO

      2.易受SQL注入,见How can I prevent SQL injection in PHP?

      改用 PDO(PHP 数据对象),它是安全的并且是面向对象的 这里有一些教程可以在 12 个视频中掌握这一点 http://www.youtube.com/watch?v=XQjKkNiByCk

      用这个替换你的 MySQL 实例

      // instance of pdo
      $config['db'] = array
      (
          'host' => '',
          'username' => '',
          'password' => '',
          'dbname' => ''
      );
      
      $dbh = new PDO('mysql:host=' . $config['db']['host'] . 
      ';dbname=' . $config['db']['dbname'],
      $config['db']['username'],
      $config['db']['password']);
      $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
      global $dbh;
      

      //dbh 只是对象的自定义名称,您可以将其命名为数据库

      编辑凭据,接下来让我们查询您的代码,如果实例不在同一个文件中,即包含连接脚本,则在启动 sql 之前调用global $dbh;,以便将对象带到当前文件,否则

      所以你的代码看起来像这样

      <?php
      
      global $dbh;
      //lets prepare the statement using : to input what ever variables we need to (securely)
      $displayData= $dbh->prepare("SELECT vName,id FROM employee WHERE vName LIKE :my_data ORDER BY vName");
          $displayData->bindValue(':my_data', $my_data , PDO::PARAM_STR); 
      //then we execute the code
          $displayData->execute();
      //store the result in array
          $result = $displayData->fetchAll();
       print_r($result); //take a look at the structured
      
      //depending on the structure echoing could be like **echo $result[0][theIdYouTrynaGet];**
      
      ?>
      

      那么我该如何在其他页面中检索它?

      <html>
      <?php  
      include_once '/*the path of your file where the above is happening*/';
      <input type="hidden" value="<?php echo $result['pass in your parameters'] ?>"/>
      ?>
      <html>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-12-23
        • 2018-10-07
        • 2011-10-08
        • 1970-01-01
        • 2016-10-14
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多