【问题标题】:Online input to a PHP function that queries (via PDO) MySql outputting JSON在线输入到查询(通过 PDO)MySql 输出 JSON 的 PHP 函数
【发布时间】:2015-10-12 07:32:17
【问题描述】:

这是我第一次发帖,如果我在这方面还不够完美,请原谅我。 我是 Web 开发的新手,我已经获得的大部分内容只是通过寻找答案。到目前为止,我一直做得很好,但我似乎无法为我正在尝试做的事情找到明确的答案。

我正在尝试创建一个易于访问的教师助理信息在线​​数据库。这是一个自我分配的项目,我正在使用 MySQL(数据库)、PHP(用于查询/回显 JSON)和 HTML 的组合。

这是我目前所拥有的:

(部分)test_db.sql

CREATE TABLE IF NOT EXISTS `TAs` ( 
`ID` int(1) NOT NULL auto_increment, 
`Name` varchar(40) NOT NULL, 
 PRIMARY KEY (`ID`) 
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; 

INSERT INTO `TAs` (`Name`) VALUES 
 ('Firstname Lastname'), 
 ('Firstname2 Lastname2'), 
 ('Firstname3 Lastname3'), 
 ('Firstname4 Lastname4');
 ...
 ...

test_to_json.php

<?php

function name($x) {

    $db = new PDO('mysql:host=localhost;dbname=json_test;charset=utf8', 'root', 'user');

    $sql = "select TAs.Name, Classes.Classname, Sessions.Day, Sessions.Time, Sessions.Location 
    from TAs, Classes, Sessions 
    where TAs.ID = Sessions.TAID and Classes.ID = Sessions.ClassID and TAs.name like '%$x%'";

    $array = $db->query($sql)->fetchAll(PDO::FETCH_ASSOC);

    echo json_encode($array), "\n";
}

name($_POST["name"]);

?>

testing.html

<!DOCTYPE HTML>
<html>
<body>

<form action="test_to_json.php" method="post">
Name: <input type="text" name="name"><br>
<input type="submit">
</form>

</body>
</html>

首先,这可能吗?或者这是徒劳的练习?

如果是,我知道我的数据库和 PHP 正在输出 JSON。我的问题来自html;当我试图弄清楚如何使用在线用户输入来创建数据库搜索时。

那么我该如何实现这样的东西呢?类似于 HTML 用户输入(即搜索)提交给 PHP 以查询 MySQL,然后返回正确的 JSON 以供使用?

直接回答会很棒!不过,可以教我工作的资源;学习很棒。真的欢迎任何能让我走上正轨的东西。

感谢您的帮助!

【问题讨论】:

    标签: php html mysql json pdo


    【解决方案1】:

    您没有将您的值放入输入中。

    <form action="test_to_json.php" method="post">
    Name: <input type="text" value="" name="name"><br>
    <input type="submit">
    </form>
    

    如果您为 Firefox 下载插件 ( Firebug ) 会有所帮助。这将显示您在“网络”选项卡中发布的内容。如果它显示您的帖子,则意味着您的 html 工作正常。试试看它是否有效。如果没有,请告诉我。而且,最好使用 INNER JOIN

    $sql = "SELECT 
    T.Name, C.Classname, S.Day, S.Time, S.Location 
    FROM TAs AS T 
    INNER JOIN Sessions AS S 
    ON T.ID = S.TAID 
    INNER JOIN Classes AS C 
    ON C.ID = S.ClassID 
    WHERE T.Name LIKE '%$x%'";
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-07-05
      • 2014-11-15
      • 1970-01-01
      • 2013-07-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-15
      相关资源
      最近更新 更多