【问题标题】:foreach loop array sql queryforeach 循环数组 sql 查询
【发布时间】:2016-05-26 11:46:57
【问题描述】:

当值 != 0 时,我试图从我的数据库中选择值,但我得到的只是一个空数组。

这里我有一个数组,其中包含所有也在数据库中的名字。

$array  = ['helm' , 'weapon', 'amulet', 'body', 'legs', "boots", 'shield', 'gloves', 'cape'];

然后我将数组放在一个 foreach 循环中,并将 _name_value 放在名称后面(在数据库中它是 helm_name = blabla _helm value = 10

当文本放在单词后面时,我在query 中循环遍历它,在其中我尝试选择name table (for example helm_name) 和value table (for example helm_value)

foreach($array as $array_item){
    $array_item_name = $array_item.'_name';
    $array_item_value = $array_item.'_value';

    $sql = $db->prepare("SELECT ".$array_item_name." FROM player WHERE naam = :naam AND ".$array_item_value." != 0");
    $sql->execute(array(":naam" => $naam));
    $fetch = $sql->fetchAll(PDO::FETCH_ASSOC);
}

但是当我运行它时返回的只是Array ( )我做错了什么?

【问题讨论】:

    标签: php mysql arrays


    【解决方案1】:

    请检查数据库错误值,也应先创建sql字符串并输出,以便手动运行生成的sql语句。

    【讨论】:

    • 检查数据库错误值?并首先创建 sql 字符串,如 $sql = "SELECT ".$array_item_name." FROM player WHERE naam = :naam AND ".$array_item_value." != 0"; 然后 $sql = $db->prepare($sql)?
    • 就是这么简单的调试技术 ;-)
    • 但是如何防止它返回和空数组?因为当我回显 $sql 时,它返回 SELECT helm_name FROM player WHERE naam = :naam AND helm_value != 0(对于数组中的每个项目,所以 helm / Weapon 等)这是正确的,但仍然返回一个空数组,而有很多列的 value 高于 0跨度>
    • 执行后,您是否检查了执行结果值的数量?如果是这样,你有没有做过 print_r($fetch); ?
    • 我知道我做错了什么。我在for loop 之外有print_r($fetch),但现在我想按名称获取结果。但是我尝试将 sql 中的 results 放入一个新数组`$results[] = $fetch;` 和 print 它在 for 循环之外,但结果是 Array ( [0] => Array ( [0] => Array ( [helm_name] => a warriors helmet ) ) [1] => Array ( [0] => Array ( [weapon_name] => a bone ) ) [2] => Array ( [0] => Array ( [amulet_name] => a golden necklace ) ) [3] => Array ( ) [4] => Array ( ) [5] => Array ( ) [6] => Array ( ) [7] => Array ( ) [8] => Array ( ) ) 我该如何正确执行此操作?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-10-20
    • 2014-05-14
    • 2014-01-08
    • 1970-01-01
    • 2018-04-14
    • 1970-01-01
    • 2017-10-27
    相关资源
    最近更新 更多