Php 获取错误“;为foreach()提供的参数无效;

Php 获取错误“;为foreach()提供的参数无效;,php,pdo,Php,Pdo,我得到一个错误: 警告:中为foreach()提供的参数无效 /第96行的home/pawno/domains/rgl.lt/public_html/vvp/index.php 本摘录第96行==20行 配置页面: <?php $databasehost = "localhost"; $databasename = "db"; $databaseuser = "user"; $databasepass = "pass"; try { $db = new PDO("mysql:ho

我得到一个错误:

警告:中为foreach()提供的参数无效 /第96行的home/pawno/domains/rgl.lt/public_html/vvp/index.php

本摘录第96行==20行

配置页面:

<?php
$databasehost = "localhost";
$databasename = "db";
$databaseuser = "user";
$databasepass = "pass";

try {
    $db = new PDO("mysql:host=$databasehost;dbname=$databasename",
      $databaseuser, $databasepass);
}
catch (PDOException $e) {
    echo 'Nepavyko prisijungti prie duomenų bazės. 
      Praneškite apie šią klaidą administracijai. 
      Klaidos kodas: ' . $e->getMessage();
}
?>

索引页:

<div class = "vvpbutton">
    <?php
    $sql = "SELECT * FROM players 
      WHERE Vardas = ".$_SESSION[ 'Vardas' ]."";
    foreach ($db->query($sql) as $row)
    {?>
    <button type="button" class="vvpbuttonss btn btn-danger">» PATIRTIES TAŠKAI: <?=$row['Xp']?> XP</button><br />
    <button type="button" class="vvpbuttonss btn btn-danger">» IEŠKOMUMAS: 0 žvaigžd.</button><br />
    <button type="button" class="vvpbuttonss btn btn-danger">» PASLAUGŲ VALIUTA: 0 kred.</button><br />
    <button type="button" class="vvpbuttonss btn btn-danger">» ADMIN: Yra ( 2015.02.25 )</button><br />
    <button type="button" class="vvpbuttonss btn btn-danger">» VIP: Nėra</button><br />
    <button type="button" class="vvpbuttonss btn btn-danger">» PINIGAI RANKOSE: 0 €</button><br />
    <button type="button" class="vvpbuttonss btn btn-danger">» PINIGAI BANKE: 0 €</button><br />
    <button type="button" class="vvpbuttonss btn btn-danger">» DARBAS: Policininkas</button><br />
    <button type="button" class="vvpbuttonss btn btn-danger">» UŽBLOKUOTAS: Ne</button>
    <?php
    }
    ?>
</div>

»帕提提斯塔什凯:XP
»IEŠKOMUMAS:0žvaigžd.
»帕斯劳格·瓦利尤塔:0克朗。
»管理:Yra(2015.02.25)
»VIP:Nėra
»PINIGAI RANKOSE:0€
»皮尼盖银行:0欧元
»DARBAS:Policininkas
»UŽBLOKUOTAS:Ne
标记就是坏的,兄弟,你不知道
$db->query($sql)
的返回值,那你为什么假设它是一个数组呢

首先将查询的返回数据存储在变量中

$rows=$db->query($sql)

然后检查它是否是数组,然后再尝试将其用作数组

if(is_array($rows)){
  //do something if the return data is an array
  foreach ($rows as $row){?>
    <button type="button" class="vvpbuttonss btn btn-danger">» PATIRTIES TAŠKAI: <?=$row['Xp']?> XP</button><br />
    <button type="button" class="vvpbuttonss btn btn-danger">» IEŠKOMUMAS: 0 žvaigžd.</button><br />
    <button type="button" class="vvpbuttonss btn btn-danger">» PASLAUGŲ VALIUTA: 0 kred.</button><br />
    <button type="button" class="vvpbuttonss btn btn-danger">» ADMIN: Yra ( 2015.02.25 )</button><br />
    <button type="button" class="vvpbuttonss btn btn-danger">» VIP: Nėra</button><br />
    <button type="button" class="vvpbuttonss btn btn-danger">» PINIGAI RANKOSE: 0 €</button><br />
    <button type="button" class="vvpbuttonss btn btn-danger">» PINIGAI BANKE: 0 €</button><br />
    <button type="button" class="vvpbuttonss btn btn-danger">» DARBAS: Policininkas</button><br />
    <button type="button" class="vvpbuttonss btn btn-danger">» UŽBLOKUOTAS: Ne</button>
  <?php }
} else {?> <p>The provided data isn't an array</p> <?php }
if(是数组($rows)){
//如果返回数据是数组,请执行某些操作
foreach($row作为$row){?>
»帕提提斯塔什凯:XP
»IEŠKOMUMAS:0žvaigžd.
»帕斯劳格·瓦利尤塔:0克朗。
»管理:Yra(2015.02.25)
»VIP:Nėra
»PINIGAI RANKOSE:0€
»皮尼盖银行:0欧元
»DARBAS:Policininkas
»UŽBLOKUOTAS:Ne
提供的数据不是数组

你应该在问题中包含你的代码。有一个粘贴库,我不明白这个代码系统:你应该设置PDO来抛出异常,这样它会告诉你你的(失败…)有什么问题查询。
Vardas
列是一个整数吗?如果不是,你需要引用它,或者更好的话,使用一个准备好的语句。
foreach()
需要一个数组,它更像是你试图使用字符串或其他东西。在尝试将它与foreach()一起使用之前,请确保
$db->query(/sql)
是一个数组 function@jeroen:列名称字面上翻译为英文“first name”,因此很有可能它不是整数。您可以将您的评论扩展为答案,或提供指向现有答案的链接吗?