如何从准备好的语句查询结果中获取所有值


How to get all values out of the prepared statement query result

我有下一段代码,用于创建mysqli对象和准备查询:

    $GLOBALS['DB_something'] = new mysqli('$database_hostname','$database_username','$database_password','$database_default');
    $GLOBALS['DB_prepared_get'] = $GLOBALS['DB_something']->prepare("SELECT ? from database_name WHERE hash=?");

以及下一个代码,以获取并显示结果。由于我最近没有接触过准备好的语句,尤其是PHP,我不知道如何从中获得结果。
当我在没有准备语句的情况下编写代码时,它是有效的,但由于许多原因,我需要用准备语句重写它。

$GLOBALS['DB_prepared_get']->bind_param('ss', $arg, $index);
$GLOBALS['DB_prepared_get']->execute();
$GLOBALS['DB_prepared_get']->bind_result($result); # this is an array of values 
$GLOBALS['DB_prepared_get']->fetch();       
            # below this, I don't know if it's ok               
            if(mysql_num_rows($result) == 0){
                return "0";
            }
            else{
                while($GLOBALS['DB_prepared_get']->fetch()) {
                    return $result;
                }
            }
            $GLOBALS['DB_prepared_get']->close();

谢谢你的帮助。

EDIT:需要明确的是,我的问题是如何获取准确的结果值来打印出来。所以语法可能是我做错的地方。

据我所知,您不能将查询的列指定为参数。您必须直接在准备好的语句字符串中写入列。

类似的东西

$GLOBALS['DB_prepared_get'] = $GLOBALS['DB_something']->prepare("SELECT a,b,c from database_name WHERE hash=?");

你的代码中有太多的错误,我甚至没有试图解释它的错误。然而,我可以说,如果你没有OO编程的经验,你应该首先尝试用mysqli编写过程代码。

这个代码应该工作:

  $mysqli = new mysqli( $database_hostname, $database_username, $database_password, $database_default );
  if ($mysqli->connect_error) {
    die('Connect Error (' . $mysqli->connect_errno . ') '  . $mysqli->connect_error);
  if ($stmt = $mysqli->prepare("SELECT ? from database_name WHERE hash=?")) {
    $stmt->bind_param("s", $fieldname); // first marker
    $stmt->bind_param("s", $hashwhere); // second marker
    $stmt->execute();
    $result = array();
    while ($stmt->fetch()) {
      $result[] = array($fieldname);
    }
    $stmt->close();
  }
  $mysqli->close();
  var_dump($result);