在关联数组中使用PHP变量从SQL数据库中获取数据


Using PHP Variables in Associative Array To Get Data from SQL Database

我在类似config.class.php的php类文件中有这个工作数组

var $admins = array("a" => "b", "c" => "d"); 

现在,出于某种原因,我需要将a、b、c、d存储在SQL数据库中;在这里给他们打电话。为了实现这一点:我创建了一个测试文件data.php,如下所示:-

<?php 
$x = "localhost";
$y = "user";
$z = "pass";
$xyz = 'db-name';
// Create connection
$connect = mysqli_connect($x, $y, $z, $xyz);
// Check connection
if (!$connect) {
    die("Connection Error: " . mysqli_connect_error());
}
$a = 'SELECT name FROM admin WHERE id = "aaaa";';
$b = 'SELECT pass FROM admin WHERE id = "aaaa";';
$ab = $connect->query($a);
$ba = $connect->query($b);
$c = 'SELECT name FROM admin WHERE id = "bbbb";';
$d = 'SELECT pass FROM admin WHERE id = "bbbb";';
$cd = $connect->query($c);
$dc = $connect->query($d);
?>
// id is a string not int in my case.

现在,在config.class.php文件中,还有一些其他文件需要&当我修改文件时,调用其他文件的现有语法如下所示:-

require_once dirname(__FILE__)."/file1.php";
require_once dirname(__FILE__)."/file2.class.php";
require_once dirname(__FILE__).'/file3.class.php';

我首先在其中添加了data.php(它位于config.class.php文件所在的同一文件夹中)文件作为:-

require_once dirname(__FILE__)."/data.php";
require_once dirname(__FILE__)."/file1.php";
require_once dirname(__FILE__)."/file2.class.php";
require_once dirname(__FILE__).'/file3.class.php';

并将关联数组更改为这样:-

var $admins = array($ab => $bc, $cd => $dc); 

但它没有认识到这些变量。我试图将它们存储在config.class.php中的另一个变量中,然后在数组中使用这些变量,但仍在执行中:-

意外变量$ab。。等等都是错误。请指导我哪里做错了,该怎么做。谢谢!

这行代码,

$ab = $connect->query($a);
$ba = $connect->query($b);

必须具有的等效关联排列

$ab => $ba, 

和这行代码,

$cd = $connect->query($c);
$dc = $connect->query($d);

必须具有的等效关联排列

$cd => $dc

在你的config.class.php中,像这个一样

require 'data.php';
$admins = array(
 $ab => $ba, 
 $cd => $dc
);

只是您在关联中使用的变量与查询结果中的变量不匹配。

您可以在"config.class.php"中包含"data.php",但请确保"config.cclass.php"中不会有与"dataphp"同名的变量。

  1. 首先,检查你的$a、$b、$c、$d是否填写在你的data.php中(由die(print_r($a));或类似的东西填写)。

  2. 如果这些都填充了正确的值,请在调用数组之前或之后检查是否包含data.php文件,因为如果是在之后,它将不起作用,因为该文件还没有加载$a、$b、$c、$d变量

  3. 也许由于某些限制,这些变量无法传递到类文件中,那么可以考虑将它们(加密!!)放在一个全局变量(即会话/cookie)中。=>这是一个肮脏的修复;)尝试选项1和两个FIRST:)

你确定你没有犯任何语法错误吗意外变量有时可能意味着您缺少一些括号或分号。

此外,$ab = $connect->query($a);返回ResultSet,而不是常规的string/int。不能将对象作为键放在数组中。您需要从ResultSet中提取数据。你可以在这里找到更多(例如):http://www.w3schools.com/php/php_mysql_select.asp