【问题标题】:Bootstrap typeahead isn't properly connecting to SQL databaseBootstrap typeahead 未正确连接到 SQL 数据库
【发布时间】:2013-02-26 13:26:41
【问题描述】:

我正在尝试将使用预输入的 Bootstrap 搜索栏连接到一个远程 SQL 数据库,该数据库中包含不同的食品。我知道预输入在某种程度上是有效的,因为当我输入“C”时,会弹出“Chicago”这个词,但是,“Chicago”不在我的 SQL 数据库中。我跟着this tutorial from YouTube

这是我的网页 HTML/PHP 代码:

这是我的搜索条形码:

<form class="navbar-search">
    <input type="text" id="search" class="search-query span3 pull-right" placeholder="Search" data-provide="typeahead">
    <div class="icon-search"></div>
</form>

这是我页面底部的 JS 代码:

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script>
<script>window.jQuery || document.write('<script src="js/jquery-1.9.0.min.js"><\/script>')</script>

<!-- Bootstrap jQuery plugins compiled and minified -->
<script src="js/bootstrap.min.js"></script>

<!-- Bootstrap JS Code -->
<script>
    $(document).ready(function(){
        $('#search').typeahead({
            source: function(query, process) {
                $.ajax({
                    url: 'database.php'
                    type: 'POST';
                    data: 'query=' + query;
                    dataType: 'JSON';
                    async: true;
                    success: function(data) {
                        process(data);
                    }
                });
            }
        });
    });
</script>

这是我应该访问 SQL 数据库的 database.php 代码:

<?php

if (isset($_POST['query'])) {
    // Connect to database
    mysql_connect('localhost','root','root');
    mysql_select_db('Menu_Items');

    // Retrieve the query
    $query = $_POST['query'];

    // Search the database for all similar items
    $sql = mysql_query("SELECT * FROM foods WHERE name LIKE '%{$query}%'");
    $array = array();

    while ($row = mysql_fetch_assoc($sql)) {
        $array[] = row['name'];
    }

    // Return the json array
    echo json_encode($array);

}

?>

数据库信息如下:

数据库名称:Menu_Items

表格名称:食物

该表由 2 列组成,第 1 列是唯一 id,第 2 列标题为“名称”。

我似乎无法弄清楚我哪里出了问题,据我所知,我已经正确地遵循了教程。关于我在哪里搞砸的任何想法?

【问题讨论】:

  • 那么错误来自哪里? ajax 调用是否返回正确的数据?
  • 如果您创建一个将数据发布到数据库中的虚拟表单。php 您是否看到正确的信息返回/它是否运行正确的 sql 查询。

标签: php mysql sql twitter-bootstrap bootstrap-typeahead


【解决方案1】:

Holy Sql 注入蝙蝠侠!以后请使用这种形式来撰写您的查询:

$query = sprintf("SELECT firstname, lastname, address, age FROM friends 
    WHERE firstname='%s' AND lastname='%s'",
    mysql_real_escape_string($firstname),
    mysql_real_escape_string($lastname));

【讨论】:

    【解决方案2】:

    在你的代码中改变这个:

    $array[] = row['name'];
    

    到这里:

    $array[] = $row['name'];
    

    并确保您将:mysql_real_escape_string 应用到您的:$_POST['query'];,以防止 SQL 注入。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多