PHP MySQL Query不提供多维数组

时间:2015-09-11 09:45:38

标签: php mysql

已解决:原因Can I parameterize the table name in a prepared statement?

我有一个非常简单的查询来从MySQL中的两列表中收集数据。通常它工作但由于某种原因,我知道收到错误:未定义的偏移量:1

$query_select = ("SELECT ?, ? FROM _HOOFDRUBRIEK");
$stmt = $mysqli->prepare($query_select);
$stmt->bind_param("ss", $column1, $column2);
$stmt->execute();
$stmt->store_result();
//$count = $stmt->num_rows;
//echo $count;
/die();

 $stmt->bind_result( $key_hoofdrubriek          ,
                     $descr_hoofdrubriek        ); 

$stmt->fetch();         

$hoofdrubriek[] = array('key'      =>$key_hoofdrubriek  ,                           
                        'descr'    =>$descr_hoofdrubriek    ); 

//Here I request the variable, what occurs the error
$var = $hoofdrubriek[1]['descr'];


echo 'Show here what's in the var: '.$var ;

有谁知道我为什么会收到此错误,因为从我的角度来看,$ array_name [row] [column]可以调用多维数组;

2 个答案:

答案 0 :(得分:1)

你误解了它是如何运作的。结果绑定参数刚刚绑定到所选字段。您仍然需要像往常一样选择普通字段。

此外,您不能将字段名称指定为输入参数。在您的情况下,您选择两个常量值,即您传递的字符串作为输入参数。这就是您在结果中获取字段名称而不是这些字段的值的原因。参数只是字符串值,因此执行的查询将如下所示:

SELECT 'key_hoofdrubriek', 'descr_hoofdrubriek' FROM FROM RGS_HOOFDRUBRIEK

因此,完全跳过问号和输入绑定参数并构建查询,如下所示:

$query_select = ("SELECT key_hoofdrubriek, descr_hoofdrubriek FROM RGS_HOOFDRUBRIEK");

或者,如果必须,可以在语句中使用PHP变量:

$query_select = ("SELECT $column1, $column2 FROM RGS_HOOFDRUBRIEK");

对于阅读,您当然仍然可以使用bind_result

答案 1 :(得分:0)

您不能将占位符用于列名称,它们始终被视为表达式。因此,您准备好的查询等同于编写:

SELECT 'key_hoofdrubriek', 'descr_hoofdrubriek' FROM RGS_HOOFDRUBIEK

这只返回表中每行的文字字符串,而不是具有这些名称的列中的值。

如果需要动态确定列名,则必须使用变量替换或连接,不能使用占位符:

$query_select = "SELECT $column1, $column2 FROM RGS_HOOFDRUBRIEK";