2 u014666034 u014666034 于 2015.06.09 22:55 提问

每次查询都得连接一次数据库,否则不继续执行的问题。

//连接数据库
$pdo = new PDO("mysql:host=$db_host; dbname=$db_name", $db_username, $db_password); 
$pdo->query('SET NAMES utf8');
//导入活动信息
$sql = "SELECT * FROM activity WHERE a_id = '$activity_id'";
$rs = $pdo->query($sql);
while($row = $rs->fetch()){
    $activity_uno=$row['u_no'];
    $activity_name=$row['a_name'];
}
//导入用户信息
$sql = "SELECT * FROM user WHERE No = '$activity_uno'";
$rs = $pdo->query($sql);
while($row = $rs->fetch()){
    $activity_usernick=$row['Nickname'];
    $activity_uservtype=$row['vtype'];
    $activity_userverify=$row['verify'];
}

在本机上(WAMP环境)这样写的代码,运行结果是正常的,一次连接就可以多次查询。但是传到服务器上(LAMP),每次查询前都要连接一次数据库,否则就不会继续查询。
在服务器上改成这样才能正常:

 //连接数据库
$pdo = new PDO("mysql:host=$db_host; dbname=$db_name", $db_username, $db_password); 
$pdo->query('SET NAMES utf8');
//导入活动信息
$sql = "SELECT * FROM activity WHERE a_id = '$activity_id'";
$rs = $pdo->query($sql);
while($row = $rs->fetch()){
    $activity_uno=$row['u_no'];
    $activity_name=$row['a_name'];
}
//连接数据库
$pdo = new PDO("mysql:host=$db_host; dbname=$db_name", $db_username, $db_password); 
$pdo->query('SET NAMES utf8');
//导入用户信息
$sql = "SELECT * FROM user WHERE No = '$activity_uno'";
$rs = $pdo->query($sql);
while($row = $rs->fetch()){
    $activity_usernick=$row['Nickname'];
    $activity_uservtype=$row['vtype'];
    $activity_userverify=$row['verify'];
}

请问问题出在哪里?如何才能像本机上测试那样一次连接多次查询?

5个回答

frank_20080215
frank_20080215   2015.06.09 23:01
已采纳

服务器(LAMP)建立一个连接池

devmiao
devmiao   Ds   Rxr 2015.06.09 23:17

修改apache的进程池的存活时间看看

u012377333
u012377333   Rxr 2015.06.10 19:20

看看是不是有设置不一样的地方

Bruce_why
Bruce_why   2015.06.10 22:38

PDO提供了两个获得程序中的错误信息的方法,一个是errorCode()方法;另一个是errorInfo()方法,打印错误信息吧

lxmsupper
lxmsupper   2015.06.12 14:14

服务器(LAMP)建立一个连接池,修改apache的进程池的存活时间看看

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
Sql Server数据库连接是否需要每次都打开?
书本上告诉我们,当执行数据库操作时,首先需要打开一个数据库连接,然后执行数据库操作,最后,再关闭数据库连接。 使用asp和php编程时都是这样处理的。 后来使用java+hibernate+mysql,通过hibernate配置连接池, 可直接通过new HibernateEntityLoader().getSession();获得一个数据库连接,未曾考虑连接效率或会存在什么问题。
关于JDBC数据库;连接的几个建议
JDBC最佳实践1:使用PrearedStatement 任何一个使用过JDBC的Java程序员几乎都知道这个,PreparedStatment可以通过预编译的方式避免我们在拼接SQL时造成SQL注入。 JDBC最佳实践2、使用ConnectionPool(连接池) 使用连接池作为最佳实践几乎都成了公认的标准。一些框架已经提供了内建的连接池支持,例如Spring中的Databas
php单例模式(多次连接数据库只实例化一次)
以前刚开始工作的时候经常连接数据库,每次用到数据库的时候就要用new进行实例并连接一次,当时因为连接数据库的次数不是很频繁,所以也没什么。后来主管对我说我现在这样每次都连接数据库的如果数据读取频繁的话对数据库和系统造成的压力会很大,让我想想办法能不能就连接一次数据库然后再次用到的时候就不用new一个新的连接了,当时怎么也没想到好的办法,知道最近学到了单例模式才恍然大悟,当时主管是引导我用单例模式的
windows服务器每次重启后都需要startup打开数据库
问题描述:Oracle服务启动后,需要手动通过cmd执行startup来装载数据库,数据库不能自动装载解决办法:在CMD窗口中执行如下命令:         oradim -EDIT -SID ORCL -STARTMODE auto -SRVCSTART system说明:oradim -EDIT -SID 实例名 -STARTMODE auto -SRVCSTART system...
为什么每次打开Myeclipse都要重新配置Tomcat
这两天发现,每次打开Myeclipse时Servers窗口都不显示Tomcat。 我又专门试了下,加载完Tomcat后重新打开Myeclipse,果然Tomcat又没了。 前几天为了节约时间,把默认的加载一些项全给取消了。如下图: 解决: 把Tomcat这个给重新勾选上就OK了!
mysql连接数据库的优化(一次连接多次使用)
直接上码 import java.sql.Connection;  import java.sql.DriverManager; import java.sql.ResultSet; public class Dbcon   { //Dbc dcp=new Dbc();  public Connection getConnection(){   Connection conn =
临界区的硬件互斥方案
临界区互斥的硬件解决 基本硬件机制包括禁止中断、Test-and-Set指令、Swap指令。 1、禁止中断    这是最简单的方法,进程一旦进入临界区就禁止一切中断,在离开临界区前放开中断,但是该方案有如下致命的弱点: 将禁止一切中断的权利赋予普通用户,若用户没有开放中断,系统的正常运行将受到影响。 不适合于多处理机系统,因为一个进程只能禁止本CPU的中断,其它CPU上的
Navicat Premium---连接云数据库,每次都要输入密码的解决办法
一、关闭连接 二、右击数据库,点“连接属性”: 三、输入密码,点击确定,下次就可以直接连接数据库,不需要手动输入密码了 更多iOS、Android、Python、Java、MySQL的文章,请点击: http://blog.csdn.net/jamiecheung 更多Java、Unity3D的文章,请点击: http://blo
MySQL 每次查询一条数据查询十次与一次查询十条数据之间的区别
一 引子 有个知友邀请我回答问题,问道:「MySQL 每次查询一条数据查 10 次和一次查询 10 条数据效率有多少差距?」 总体上来说,一次查询 10 条数据效率是高于每次查询一条数据查 10 次的。但究竟差距多少,具体的数据很难说。这本来是一个很简单的问题,但我还是想亲身实践下,给以后碰到这个问题的朋友一点参考。我先做一个模拟,然后在文末给出一个分析。
MyBatis执行一次数据库操作的原理以及顺序
1、初始化SqlSessionFactory,默认实现是DefultSqlSessionFactory,这个一般是一个应用一个实例就够了,例如单例模式; 2、通过SqlSessionFactory获得SqlSession,默认实现是DefaultSqlSession,这个应用范围是一次数据库操作,可以简单理解为JDBC操作的Connection,数据库操作执行完,需要调用close方法手动关闭连