【发布时间】:2013-04-11 15:20:39
【问题描述】:
我有一个 PHP 函数,我正在从使用 mysql 扩展名转换为 mysqli 扩展名。
一切都很好,直到这里。我以前使用 mysql_result 来获取单条数据。 mysqli中没有直接的等价物,所以我尝试了以下但仍然不起作用。
function getdbvalue($table,$value,$idfield,$id) {
$qrytext = "SELECT $value FROM $table WHERE $idfield LIKE '$id'";
$valueqry = mysqli_query($dbh,$qrytext);
if (FALSE === $valueqry) die("Select failed: ".mysqli_error);
$result = mysqli_fetch_row($valueqry);
$returnvalue = $result[0];
return $returnvalue;
}
我已经验证变量可以正常传递给函数,并且函数实际上正在被触发。如果我返回 $id,我会看到 ID 号。
我没有收到查询错误。
已解决:
我需要在函数中将数据库连接变量添加为全局变量:
工作代码:
function getdbvalue($table,$value,$idfield,$id) {
global $dbh; // This was missing!
$qrytext = "SELECT $value FROM $table WHERE $idfield LIKE '$id'";
$valueqry = mysqli_query($dbh,$qrytext);
if (FALSE === $valueqry) die("Select failed: ".mysqli_error);
$result = mysqli_fetch_row($valueqry);
$returnvalue = $result[0];
return $returnvalue;
}
感谢大家的帮助。 :)
【问题讨论】:
-
如果你改变喜欢 for = ??
-
尝试
var_dump或$result。 -
@RobertRozas LIKE 和 = 之间没有变化
-
尽管您从 mysql_ 切换到 mysqli,但您确实应该使用 PDO,因为它更好
-
@ChrisCooney 返回 NULL
标签: php mysql mysqli procedural