gpt4 book ai didi

php - 使用变量从 mysql 数据库获取数据

转载 作者:行者123 更新时间:2023-11-30 21:46:50 25 4
gpt4 key购买 nike

我正在尝试使用一个对象从 mysql 数据库中获取数据,该对象实际上是一个变量:

try {
$mysqlcon = new PDO($dbserver, $db['user'], $db['pass'], $dboptions);
// Selecting database "user" to get data about a specific client
if(($user_data = $mysqlcon->query("SELECT * FROM $dbname.user;")->fetchAll(PDO::FETCH_UNIQUE|PDO::FETCH_ASSOC)) === false)
{
echo '$#!+ happens, Critical DataBase Error!';// error on db select
}

echo 'Country: '.$user_data[$clientuid]['nation']; // This is not working, it gives nothing
echo 'Country: '.$user_data['OISnyJzyjA63XkPB6xla8hjms3M=']['nation']; // BUT This works perfectly
// DEBUGGING
echo $clientuid; // it outputs: OISnyJzyjA63XkPB6xla8hjms3M=
var_dump($clientuid); // and this is the important thing, it outputs this: object(TeamSpeak3_Helper_String)#27 (2) { ["string":protected]=> string(28) "OISnyJzyjA63XkPB6xla8hjms3M=" ["position":protected]=> int(0) }
}
catch (PDOException $e)
{
echo "Database Connection failed: ".$e->getMessage()."\n";
exit;
}

echo $clientuid; 输出:OISnyJzyjA63XkPB6xla8hjms3M=

这不起作用,它什么也没给出:

echo 'Country: '.$user_data[$clientuid]['nation'];

这非常有效:

echo 'Country: '.$user_data['OISnyJzyjA63XkPB6xla8hjms3M=']['nation'];                

var_dump($clientuid); 产生这个:

object(TeamSpeak3_Helper_String)#27 (2) {
["string":protected]=> string(28) "OISnyJzyjA63XkPB6xla8hjms3M="
["position":protected]=> int(0)
}

最佳答案

$user_data 是一个对象并且有一个 protected 字符串属性和一个神奇的 __tostring() 方法,当对象作为字符串访问(如 echo)。如果没有 __tostring() 方法,您将得到:

Recoverable fatal error: Object of class TeamSpeak3_Helper_String could not be converted to string

如果字符串属性是 public 那么你可以直接访问它:

echo 'Country: '.$user_data[$clientuid->string]['nation'];

但是它是protected 并且不可访问,你会得到:

Fatal error: Uncaught Error: Cannot access protected property TeamSpeak3_Helper_String::$string

当用作数组索引时,它不会强制使用字符串,因此要强制它触发 __tostring() 魔术方法,转换为 (string) 将起作用(虽然可能有几种方法可以做到这一点):

echo 'Country: '.$user_data[(string)$clientuid]['nation'];

或使用引号:

echo 'Country: '.$user_data["$clientuid"]['nation'];

关于php - 使用变量从 mysql 数据库获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49056554/

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