php查询MySQL数据库问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php查询MySQL数据库问题相关的知识,希望对你有一定的参考价值。
数据表A,字段有:姓名,手机号,籍贯。 现在要用php网页给出一个输入框,用户输入姓名,从数据库查出姓名手机号籍贯并显示出来,如何实现,作为一名PHP新手,请假各位大侠。
参考技术A 可以用AJAX,在不用刷新页面的前提下调用你所查的内容!例如:输入一个姓名,用AJAX把姓名传递到指定php文件,然后在php文件中获取这个姓名,用这个姓名做为查询条件,获取这个姓名所对应的其它相关信息,然后存入数组返回查询页面,再用函数处理数据后显示在对应位置,就可以了! 参考技术B 有两种可能:1)
如果你的php的服务器和mysql服务器不在一个机器上,那有可能就是php服务器的mysql版本太低了,最好升级到与mysql服务器版本一致
2)
如果两者在一台机器上,那就要用old_password对mysql库中user表里面的password重新复位一下:
mysql>set
password
for
'some_user'@'some_host'
=
old_password('newpwd');
使用多个 php 函数查询单个(mysql)数据库的正确方法
【中文标题】使用多个 php 函数查询单个(mysql)数据库的正确方法【英文标题】:Correct way of having multiple php functions to query a single (mysql) database 【发布时间】:2017-07-11 19:50:02 【问题描述】:在一个 PHP 网站上工作,我遇到了一个我自己无法解决的效率问题。
我有几个单独的 php 文件:
connection.php - 连接到数据库。 sqlFunctions.php - 几个执行不同 sql (mysqli) 查询、操作数据并返回数据的函数。 index.php - 执行 sqlFunctions.php 中的一些函数并使用返回值在页面中显示某些内容的文件。connection.php:
$servername = "DATA"; //Replaced to "DATA" for posting on ***
$username = "DATA";
$password = "DATA";
$dbname = "DATA";
$con = new mysqli($servername, $username, $password, $dbname);
if ($con->connect_error)
die("Connection failed: " . $con->connect_error);
sqlFunctions.php:
<?php
function query1()
require('connection.php');
//PDO Query to DB, fetch, store, modify data etc.
mysqli_close($con);
//Return modified data
function query2()
require('connection.php');
//PDO Query to DB, fetch, store, modify some other data etc.
mysqli_close($con);
//Return modified data
?>
index.php:
//Simplified version
require('sqlFunctions.php');
<?php echo query1();?>
所以我在想 - 在每个函数调用上启动与数据库的新连接并不是一个好主意。如果我要在 sqlFunctions.php 中的函数中启动与数据库的连接 - 我需要将另一个变量/引用/指针(你知道我的意思)传递给该文件中的每个函数这是我不想做的事情。
那么完成我需要的最佳方法是什么?
TL;DR;:
主文件调用单独文件中的函数 该函数执行 sql 查询并返回数据 显示返回的数据 在每次函数调用时都不会重新打开/关闭数据库连接。【问题讨论】:
深思:youtube.com/watch?v=3_alwb6Twiw 【参考方案1】:有多种选择。
选项 1. 在每个函数中声明全局数据库连接。
sqlFunctions.php:
<?php
require('connection.php');
function query1()
global $con;
// mysqli code with $con
function query2()
global $con;
// mysqli code with $con
?>
选项 2。使用 GLOBALS。
connection.php:
...
$GLOBALS['con'] = new mysqli($servername, $username, $password, $dbname);
...
sqlFunctions.php:
<?php
require('connection.php');
function query1()
// mysqli code with $GLOBALS['con']
function query2()
// mysqli code with $GLOBALS['con']
?>
选项 3. 将所有函数包装到一个类中(注意大写 S)。
SqlFunctions.php:
class SqlFunctions
protected $con;
public function __construct()
global $con;
// can also pass $con as parameter or init db here
$this->con = $con;
public function query1()
// mysqli code with $this->con
public function query2()
// mysqli code with $this->con
index.php:
require('SqlFunctions.php');
$sqlFunctions = new SqlFunctions();
<?php echo $sqlFunctions->query1();?>
在这种情况下,您还可以在类内部初始化连接或将其作为参数传递给 __construct()。
【讨论】:
谢谢!选项 1 和 2 正是我想要的!另外,我将如何关闭连接?我认为如果我编写另一个函数来关闭连接会起作用,因为我会将连接作为全局变量? 不客气!完成所有调用后,您可以关闭连接。否则,它将在脚本结束时自动关闭。除非您稍后在同一页面上打开多个其他连接(我对此表示怀疑),否则我会让服务器为您关闭它。 这是一个奇特的答案,您设法提供了 3 个解决方案,实际上只提供了一个 @your-common-sense 你能解释一下你的意思吗?哪些选项无效,为什么? globals 与 global 完全相同。而对象解决方案将再次给您同样的问题,但现在不是使用 db 对象,而是使用您自己的对象。以上是关于php查询MySQL数据库问题的主要内容,如果未能解决你的问题,请参考以下文章