Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/127.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP PDO未定义索引_Php_Postgresql_Pdo_Indexing_Undefined - Fatal编程技术网

PHP PDO未定义索引

PHP PDO未定义索引,php,postgresql,pdo,indexing,undefined,Php,Postgresql,Pdo,Indexing,Undefined,我已经浏览了谷歌和其他几个网站,但我不明白为什么这不起作用 我正在处理uni任务,并运行以下代码: $db = connect(); $testname = 'chunk'; try { $stmt = $db->prepare('SELECT * FROM TreasureHunt.Player WHERE name = ?'); $stmt->execute(array($testname)); $result = $stmt-&

我已经浏览了谷歌和其他几个网站,但我不明白为什么这不起作用

我正在处理uni任务,并运行以下代码:

$db = connect();
$testname = 'chunk';
 try {
        $stmt = $db->prepare('SELECT * FROM TreasureHunt.Player WHERE name = ?');
        $stmt->execute(array($testname));
        $result = $stmt->fetchAll(PDO::FETCH_ASSOC);
        $stmt->closeCursor();
        } 
    catch (PDOException $e) { 
    print "Error checking login: " . $e->getMessage(); 
}

$count = $stmt->rowCount();
echo 'Row count: ', $count, '<br>';
var_dump($result);
echo '<br>Result: ', $result['name'], ' pw: ', $result["password"], '<br>';
print_r($result);
现在我知道这意味着,在我的$result变量中,索引“name”必须不存在。但这让我感到困惑,因为它确实存在,通过查看:var_dump($result)进行检查 var_dump($result)给了我:

array(1) { [0]=> array(5) { ["name"]=> string(5) "chunk" ["password"]=> string(7) "truffle" ["pw_salt"]=> string(8) "g#m#g#m#" ["gender"]=> string(1) "m" ["addr"]=> string(10) "Goon Docks" } } 
Array ( [0] => Array ( [name] => chunk [password] => truffle [pw_salt] => g#m#g#m# [gender] => m [addr] => Goon Docks ) )
print_r($result)给了我:

array(1) { [0]=> array(5) { ["name"]=> string(5) "chunk" ["password"]=> string(7) "truffle" ["pw_salt"]=> string(8) "g#m#g#m#" ["gender"]=> string(1) "m" ["addr"]=> string(10) "Goon Docks" } } 
Array ( [0] => Array ( [name] => chunk [password] => truffle [pw_salt] => g#m#g#m# [gender] => m [addr] => Goon Docks ) )
那么,为什么我不能将它们称为$result['name']?或者我该如何实际引用它


谢谢。如果这是一个基本问题,很抱歉。

您应该使用
$result[0]['name']

返回一个数组数组。所以在你的情况下

$result[0]['name']
而不是

$result['name']

另一种选择是每次只获取结果的一行。

您的代码中有几个错误。我重新编写了它,希望能够删除它们,并使其按预期工作:

$db = connect();
$testname = 'chunk';

try {
    $stmt = $db->prepare('SELECT * FROM TreasureHunt.Player WHERE name = ?');
    $stmt->execute(array($testname));

    foreach($stmt->fetchAll(PDO::FETCH_ASSOC) as $row){
        echo 'Result: ' . $result['name'] . ' pw: ' . $result['password'] . '<br />';
    }
} catch (PDOException $e) { 
    print "Error checking login: " . $e->getMessage(); 
}

$count = $stmt->rowCount();
echo 'Row count: ' . $count .  '<br>';
$db=connect();
$testname='chunk';
试一试{
$stmt=$db->prepare('SELECT*FROM TreasureHunt.Player WHERE name=?');
$stmt->execute(数组($testname));
foreach($stmt->fetchAll(PDO::FETCH_ASSOC)作为$row){
回显'Result:'.$Result['name'].'pw:'.$Result['password'].
; } }渔获量{ 打印“检查登录时出错:”..e->getMessage(); } $count=$stmt->rowCount(); 回显“行计数:”$伯爵
';
您的代码中有几个错误。我已经重写了它,希望能够删除它们,并让它按预期工作。您还必须按照中所述进行连接

$db=connect();
$testname='chunk';
$stmt=$db->prepare('SELECT*FROM TreasureHunt.Player WHERE name=?');
$stmt->execute(数组($testname));
$row=$stmt->fetch();
$count=$stmt->rowCount();
回显“行计数:”,$count,“
”; 回显“
结果:”、$row['name']、'pw:'、$row[“密码”]、“
”;
正如您从
var_dump($result)
的输出中所看到的,这是一个包含另一个数组的数组。哇,这是很多无法解释的否决票,特别是对于一个实际上写得相当好的问题。下层选民,也请发表评论?啊。。所以它是一个多维数组。谢谢。-1使用异常打印错误输出。。。还有很多错误left@YourCommonSense我只添加了异常错误,因为它在原始代码示例中。这并不是否决投票的真正原因。@YourCommonSense啊,刚刚看到了最后一个回声的错误,更正了它们,谢谢这不是一个错误,而是一个正确的语法:)一点解释不会有什么坏处,如果它能帮助其他有同样问题的用户……同意,我以后会发布更多信息。