gpt4 book ai didi

php - 当存储在另一个文件中时,MySQL 连接参数将不起作用(有时)

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

这已经让我困惑了几个小时,我已经到了放弃的地步。

我的项目有 3 个相关文件:

dbconfig.php
register.php
testmysql.php

dbconfig.php有这个功能:

        public function connString()
{
$connString['host'] = $this->host;
$connString['username'] = $this->username;
$connString['password'] = $this->password;
$connString['database'] = $this->database;
return $connString;
}

我在 testmysql.php 中执行此操作,效果完美:

    require('dbconfig.php');
$dbObject = new dbconfig();

$conn = $dbObject->connString();
mysql_connect($conn['host'],$conn['username'],$conn['password']) or die(mysql_error());
mysql_select_db($conn['database']) or die(mysql_error());

但是当我在 register.php 中执行相同的操作时,它失败了:

<div class="div_texbox">
<select id="field1" name="field1" class="textbox">
<option value="0">Select</option>
<?php
require('dbconfig.php');
$dbObject = new dbconfig();

$conn = $dbObject->connString();
mysql_connect($conn['host'],$conn['username'],$conn['password']) or die(mysql_error());
mysql_select_db($conn['database']) or die(mysql_error());

$result = mysql_query("SELECT * FROM table") or die ('error selecting');

while ($row = mysql_fetch_array( $result ))
{
echo "<option value=\"" . $row['ID'] . "\">" . $row['value'] . "</option>";
}
?>
</select>
</div>

有关我何时说“失败”的详细信息:Field1 是一个应该填充的选择框,但它没有填充,并且表单中没有显示更多字段(可能是因为 die)。我尝试安装 PHP 调试器来查看抛出的消息,但无法正常工作。如果我在连接参数中进行硬编码,则一切正常。$connvar_dump 显示它在所有正确的索引处保存了所有正确的值(也很明显,testmysql.php作品)。

此外,一些故障排除使它看起来在 mysql_connect 处失败

我分析了呈现页面的 HTML 代码以查看 PHP 脚本的输出,它显示的是:

( ! ) Fatal error: Cannot redeclare class dbconfig in C:\wamp\www\site\dbconfig.php on line 10
Call Stack
#TimeMemoryFunctionLocation
10.0005698544{main}( )..\register.php:0
21.2728763824require( 'C:\wamp\www\site\dbconfig.php' )..\register.php:106

dbconfig 构造函数

public function __construct($config = NULL)
{
if ($config != NULL)
{
$this->host = $config['hostname'];
$this->database = $config['database'];
$this->username = $config['username'];
$this->password = $config['password'];
}
else
{
$this->host = $this->defaultConfig['hostname'];
$this->database =$this->defaultConfig['database'];
$this->username = $this->defaultConfig['username'];
$this->password = $this->defaultConfig['password'];

}
}

最佳答案

看起来您多次包含dbconfig.php,这导致了无法重新声明类 fatal error 。

更改任何引用

require('dbconfig.php')

require_once 'dbconfig.php';

当你在做的时候,stop using or die()并切换到PDOparameterised statements .

关于php - 当存储在另一个文件中时,MySQL 连接参数将不起作用(有时),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8060347/

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