【发布时间】:2014-01-10 00:17:01
【问题描述】:
我有以下代码。
` $db = mysqli_connect('localhost', 'zyk', 'nuithadit6-6-6', 'phpAdv');
if ( mysqli_connect_errno() )
{
printf("Connect failed: %s\n", mysqli_connect_errno() );
exit();
}
$thisDB = mysqli_prepare($db, "CREATE DATABASE ?");
echo mysqli_stmt_error($thisDB);;`
运行此代码时,我收到以下警告:
PHP 警告:mysqli_stmt_error() 期望参数 1 为 mysqli_stmt,布尔值在第 13 行的 /Library/WebServer/Documents/phpAdvanced/cap1/createDB.php 中给出。
如果我将 mysqli_prepare 函数的第二个参数更改为以下内容:
“创建数据库 myDB”
然后警告消失。当查询字符串中有变量时,mysqli_prepare 似乎不喜欢它,并且当我以这种方式使用它时,它为 $thisDB 返回 NULL。据我了解,这不是预期的行为。
我一直在阅读手册和论坛,但仍然没有答案。有人知道为什么 mysqli_prepare 没有返回适当的值吗?
mysqli的版本是5.0.8,我的php版本是5.3.15。
【问题讨论】:
-
绑定变量只能应用于数据值,不能应用于表、列或数据库名称
-
echo mysqli_error($db);打印什么? -
mysqli_stmt_error($thisDB);打印错误字符串,以防 mysqli_prepare() 函数在执行时返回错误。什么样的错误?据我了解,可能是解析作为输入参数提供的语句时出错,或者是与数据库连接相关的任何其他错误。
标签: php variables mysqli null return