【问题标题】:mysqli version of mysql patternmysqli 版本的 mysql 模式
【发布时间】:2014-10-20 03:26:13
【问题描述】:

这是 PHP 中的 MySQL 模式:

$username="username";
$password="password";
$database="username-databaseName";

// Opens a connection to a mySQL server
$connection=mysql_connect (localhost, $username, $password);
if (!$connection) {
  die("Not connected : " . mysql_error());
}

// Set the active mySQL database
$db_selected = mysql_select_db($database, $connection);
if (!$db_selected) {
  die ("Can\'t use db : " . mysql_error());
}

// Search the rows in the markers table
$query =  some query
$result = mysql_query($query);

我尝试将大部分内容替换为 mysqli 模式,然后将查询部分粘贴在底部,如下所示:

//Database Information
$db_host = "localhost"; //Host address (most likely localhost)
$db_name = "username-databaseName"; //Name of Database
$db_user = "username"; //Name of database user
$db_pass = "password"; //Password for database user

/* Create a new mysqli object with database connection parameters */
$mysqli = new mysqli($db_host, $db_user, $db_pass, $db_name);
GLOBAL $mysqli;

if ($mysqli->connect_errno) {
        echo "<p>MySQL error no {$mysqli->connect_errno} : {$mysqli->connect_error}</p>";
        exit();
    }

// Search the rows in the markers table
$query =  some query
$result = mysql_query($query);

但是,我收到以下错误消息:

Invalid query: No database selected

我做错了什么?

【问题讨论】:

  • 您的 mysqli 代码中仍有mysql_query。你想要$mysqli-&gt;query() / mysqli_query()。理想情况下,您将希望使用准备好的语句(假设您正在传递一些查询参数)而不是直接运行查询。见php.net/manual/mysqli.quickstart.prepared-statements.php
  • @Phil 有道理,谢谢。

标签: php mysql mysqli


【解决方案1】:

首先,您拨打的是mysql_query 而不是mysqli_query,就像您打算的那样。

第二,由于你使用的是面向对象的形式,你需要调用mysqli_query作为方法:

$result = $mysqli->query($query);

【讨论】:

  • 程序形式和 OOP 形式是可以互换的。无论如何,过程函数只是简单地代理方法调用。
猜你喜欢
  • 2017-06-20
  • 1970-01-01
  • 1970-01-01
  • 2015-05-08
  • 2011-07-17
  • 1970-01-01
  • 2023-04-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多