数据未从 Mysql 数据库中检索

Posted

技术标签:

【中文标题】数据未从 Mysql 数据库中检索【英文标题】:Data is not retrieving from Mysql database 【发布时间】:2017-08-02 09:10:20 【问题描述】:

这是我的 index.php 文件

我没有从 Mysql 数据库中获取任何数据。页面加载为空,它没有加载或从数据库中获取任何结果。请帮我。谢谢

<!DOCTYPE html>
<html>
<head>

<link rel="stylesheet" type="text/css" href="sty.css" />
<link rel="stylesheet" type="text/css" href="css/font-awesome.css" />       
</head>
<body>
 <div id='data'></div>
</body>


<script src="code.jquery.com/jquery-3.1.1.js"; integrity="sha256-16cdPddA6VdVInumRGo6IbivbERE8p7CQR3HzTBuEL‌​A=" crossorigin="anonymous"></script>
<script type="text/javascript">
    $(document).ready(function()


     $.ajax(

             type: "GET",
             url: "get_data.php",
             data: 
                 'offset':1,
                 'limit' :5
            ,
            success: function(data)
                $('#data').html(data);
            

       );

    );


</script>

</html>

这是我的 get_data.php 文件

<?php



    if(isset($_GET['offset']) && isset($_GET['limit']))

        $limit = $_GET['limit'];
        $offset = $_GET['offset'];  

        $connection = mysqli_connect('localhost', 'root', '', 'text');

        $data = mysqli_query($connection, "SELECT * FROM `text` LIMIT $limit OFFSET $offset");
        while($row = mysqli_fetch_array($data)) 
          echo '<div id="post1"><p>'.$row['text'].'</p></div>';
         
    




?>

这是我的数据库结构

-- phpMyAdmin SQL Dump
-- version 4.5.1
-- http://www.phpmyadmin.net
--
-- Host: 127.0.0.1
-- Generation Time: Mar 12, 2017 at 09:08 AM
-- Server version: 10.1.19-MariaDB
-- PHP Version: 7.0.13

SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";


/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;

--
-- Database: `text`
--

-- --------------------------------------------------------

--
-- Table structure for table `text`
--

CREATE TABLE `text` (
  `id` int(11) NOT NULL,
  `image` varchar(200) NOT NULL,
  `text` longtext NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Dumping data for table `text`
--

INSERT INTO `text` (`id`, `image`, `text`) VALUES
(1, '', ''),
(2, '', 'hi'),
(3, '', 'hhh'),
(4, '', 'dgg'),
(5, '', 'hfg'),
(6, '', 'hfg'),
(7, '', 'hhhhh'),
(8, '', 'hi'),
(9, '', '1'),
(10, '', '2'),
(11, '', '3'),
(12, '', '4'),
(13, '', '5'),
(14, '', '4'),
(15, '', '1'),
(16, '', '1'),
(17, '', '3'),
(18, '', '121'),
(19, '', '45457'),
(20, '', 'hh'),
(21, '', '45'),
(22, '', 'fgsgf'),
(23, '', '45454545'),
(24, '', 'jj'),
(25, '', 'fafads'),
(26, '', 'asf'),
(27, '', 'fsdfsfg'),
(28, '', '1'),
(29, '', ''),
(30, '', ''),
(31, '', ''),
(32, '', ''),
(33, '', ''),
(34, '', ''),
(35, '', ''),
(36, '', ''),
(37, '', ''),
(38, '', '');

--
-- Indexes for dumped tables
--

--
-- Indexes for table `text`
--
ALTER TABLE `text`
  ADD PRIMARY KEY (`id`);

--
-- AUTO_INCREMENT for dumped tables
--

--
-- AUTO_INCREMENT for table `text`
--
ALTER TABLE `text`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=39;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;

index image

get data image

【问题讨论】:

您是否尝试过从浏览器点击网址。在浏览器http://localhost/... /get_data.php?offset=10&amp;limit=0 中打开 URL 并检查输出是否符合您的要求。这是为了检查您的 php 代码是否有错误 请将ini_set('display_errors', 1); ini_set('display_startup_errors', 1); error_reporting(E_ALL);添加到两个文件的顶部 尝试查看您的 apache 错误日志 【参考方案1】:

这里试试mysqli错误函数是:

<?php

if(isset($_GET['offset']) && isset($_GET['limit']))
$connection = mysqli_connect('localhost', 'root', '', 'text');
if(isset($_GET["limit"]))
 $limit = $_GET['limit'];

else
 $limit=5;


if(isset($_GET["offset"]))
 $offset = $_GET['offset'];

else
 $offset=1;


$data = mysqli_query($connection, "SELECT * FROM `text` LIMIT $limit OFFSET $offset")or die(mysqli_error($connection));


while($row = mysqli_fetch_array($data)) 
     echo '<div id="post1"><p>'.$row['text'].'</p></div>';
    


?>

如果你的 sql 查询有错误,这会给你一个错误。

【讨论】:

评论不用于扩展讨论;这个对话是moved to chat。【参考方案2】:

您得到空白输出,因为没有将 GET 参数发送到 get_data.php。试试这个:

url: "get_data.php?offset=foo&limit=bar",

【讨论】:

ajax获取url中的请求传递参数【参考方案3】:

无论何时编码,请始终尝试捕获所有可以捕获的异常。

在您的 ajax 调用中,您没有处理失败案例,因此您无法找到出错的地方。

   $.ajax(
        type: "GET",
        url: "get_data.php",
        dataType: 'html',
        data: 
            'offset': 1,
            'limit': 5
        ,
        success: function (data) 
            $('body').append(data);
        ,
        error: function (jqXHR, exception) 
            var msg = '';
            if (jqXHR.status == 404) 
                msg = 'Requested page not found. [404]';
             else if (jqXHR.status == 500) 
                msg = 'Internal Server Error [500].';
             else if (exception === 'parsererror') 
                msg = 'Requested JSON parse failed.';
             else if (exception === 'timeout') 
                msg = 'Time out error.';
             else if (exception === 'abort') 
                msg = 'Ajax request aborted.';
             else 
                msg = 'Uncaught Error.\n' + jqXHR.responseText;
            
            alert(msg);
        

    );

【讨论】:

以上是关于数据未从 Mysql 数据库中检索的主要内容,如果未能解决你的问题,请参考以下文章

使用 Workbench 从 MSSQL 迁移到 MySQL 时未从源中检索模式列表

未从 firebase 数据库中检索个人资料图片

$_POST 未从 Javascript 的 Fetch() 中检索数据

在 Angular 7 中未从 Firebase 检索数据

前端 (HTML) 未从 Microsoft Azure 中的 mysql 数据库获取 Spring Boot 应用程序中的数据

AWS RDS MySQL 数据库未从 pymysql 获取 INSERT 语句