gpt4 book ai didi

php - jQuery 自动完成功能无法连接到 mySQL 数据库

转载 作者:行者123 更新时间:2023-11-29 12:04:15 25 4
gpt4 key购买 nike

我有一个自动完成表单,工作完全正常。我离开我的笔记本电脑并回来,现在它不再工作了。

我的数据库名为 wallettest

我的表名为“population”,有 4 列:ID、位置、slug、人口。

我有 3 个文件:index.php、script.js 和 ajax_refresh.php。

进行一些测试,似乎它没有访问将我连接到数据库的ajax_refresh.php。因此,从那里开始,我决定将 ajax_refresh.php 放入我的 index.php 文件中。好吧,现在我已连接到我的数据库,但出现错误(我不明白为什么它一开始就无法连接我,我的文件中有正确的语法:

js file:"$.ajax({
url: "ajax_refresh.php",

无论如何,文件现在看起来像这样,我得到的错误如下:

index.php:

<?php
// PDO connect *********
//CHECK TO SEE IF CONNECTION IS MADE
$db = mysql_connect("localhost","root","butthead");
if ($db) {
echo("- Connection to database successful -");
}
else if (!$db) {
die("Database connection failed miserably: " . mysql_error());
}


function connect() {
return new PDO('mysql:host=localhost;dbname=wallettest', 'root', 'butthead', array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));
}


$pdo = connect();
$keyword = '%'.$_POST['keyword'].'%';
$sql = "SELECT * FROM population WHERE slug LIKE (:keyword) ORDER BY population DESC LIMIT 0, 10";
$query = $pdo->prepare($sql);
$query->bindParam(':keyword', $keyword, PDO::PARAM_STR);
$query->execute();
$list = $query->fetchAll();
foreach ($list as $rs) {
// put in bold the written text
$slug = str_replace($_POST['keyword'], '<b>'.$_POST['keyword'].'</b>', $rs['slug']);
// add new option
echo '<li onclick="set_item(\''.str_replace("'", "\'", $rs['slug']).'\')">'.$slug.'</li>';
}

// END AJAX_REFRESH.PHP
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Autocomplete using PHP/MySQL and jQuery</title>
<link rel="stylesheet" href="css/style.css" />
<script type="text/javascript" src="js/jquery.min.js"></script>
<script type="text/javascript" src="js/script.js"></script>
</head>


<body>
<div class="container">
<div class="header">

</div><!-- header -->
<h1 class="main_title">Autocomplete using PHP/MySQL and jQuery</h1>
<div class="content">
<form>
<p>Table consists of : ID, Location, Slug, Population </p>
<br><br>
<div class="label_div">Search for a Slug : </div>
<div class="input_container">
<input type="text" id="slug" onkeyup="autocomplet2()">
<ul id="list_id"></ul>
</div>
</form>
<br><br><br><br>
<p>List will be ordered from Highest population to lowest population (Top to bottom)</p>
<br><br>
</div><!-- content -->
<div class="footer">
Powered by Jason's Fingers</a>
</div><!-- footer -->
</div><!-- container -->
</body>
</html>

脚本.js:

// autocomplete : this function will be executed every time we change the text
function autocomplet2() {
var min_length = 3; // min caracters to display the autocomplete
var keyword = $('#slug').val();
if (keyword.length >= min_length) {
$.ajax({
url: 'ajax_refresh.php',
type: 'POST',
data: {keyword:keyword},
success:function(data){
$('#list_id').show();
$('#list_id').html(data);
}
});
} else {
$('#list_id').hide();
}
}

// set_item : this function will be executed when we select an item
function set_item(item) {
// Changes input to the full name on selecting
$('#slug').val(item);
// Hides list after selection from list
$('#list_id').hide();
}

function change()

错误:enter image description here

最佳答案

您的代码中有很多有趣的事情:

  1. 缺少表单方法(默认为 GET)。
  2. 混合mysql_*和 PDO API。您可以删除使用 mysql_connect() 的整个条件。因为您从未使用过在那里创建的连接( $db )。
  3. 输入元素中缺少名称属性:

    <input type="text" id="slug" name="keyword" onkeyup="autocomplet2()">

产生错误的是 PHP 中的这一行:

$keyword = '%'.$_POST['keyword'].'%';

当您最初加载页面时,变量 $keyword未定义,因为 $_POST数组尚未设置。防止这种情况的方法是在为变量赋值之前检查数组是否已设置:

if(isset($_POST)) {
$keyword = '%'.$_POST['keyword'].'%';
// other code relying on $keyword being set should go here
}

记下上面代码中的注释。 任何依赖于所设置的关键字的代码(例如数据库查询)都应该位于条件内部。如果未设置变量,则运行该代码是没有意义的。

最后,当您决定扩展此处的内容时,您的代码组织将开始变得难以管理。考虑将 PHP、HTML 和 JS 相互分离,以便于管理。

关于php - jQuery 自动完成功能无法连接到 mySQL 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31822028/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com