我有下一个代码,创建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();
感谢您的帮助。
编辑:为了清楚起见,我的问题是如何获取确切的结果值以将其打印出来。所以语法就是我可能做错了。答案 0 :(得分:0)
据我所知,您无法将查询列指定为参数。您必须直接在准备好的语句字符串中编写列。
像
这样的东西$GLOBALS['DB_prepared_get'] = $GLOBALS['DB_something']->prepare("SELECT a,b,c from database_name WHERE hash=?");
答案 1 :(得分:0)
你的代码中有很多错误,我甚至都没有尝试解释它的错误。但是,我可以说,如果你没有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);