我正在将所有使用 PHP MySQL 的查询更改为 MySQLi。
我使用连接设置创建了一个名为 db.php 的文件。
该文件包括
<?php
$db = new mysqli('localhost', 'mysqlusername', 'mysqlpassword');
我将文件包含在:
require_once "/location/db.php";
之后我使用:
if($db->connect_error)
{
echo "Not connected, error: ".$db->connect_error;
}
else
{
echo "Connected.";
}
它与“已连接”相呼应。所以我认为我的连接良好。
我有 3 个 PHP 变量,我想将它们插入到我的数据库表中。
验证我的连接正常后,我想使用以下命令进行查询:
$stmt = $mysqli->prepare("INSERT INTO Code (`Name`, `Code`, `Admin`) VALUES (?,?,?)");
$stmt->execute([
$name,
$code,
$admin
]);
但是我收到错误:
未选择数据库
我验证了语法,并且在 MySQL CLI 中执行时相同的 SQL 可以工作。我在使用 mysqli 时做错了什么?
打开连接时,您可以将数据库名称作为第四个参数传递:
$db = new mysqli('localhost','mysqlusername','mysqlpassword','database');
事实上,您没有选择任何数据库。您已连接到数据库服务器,其中可能有数百个数据库。您需要指定要将查询发送给哪一个!
您的查询很好,当您直接输入它时它会起作用,因为当您这样做时您已经指定了要使用的数据库。
您尚未在代码中选择数据库。根据 php.net 中的this page,mysqli_connect 或 mysqli 构造函数中有一个参数,您可以在其中输入数据库名称。
这是一个简单的例子:
<?php
$mysqli = new mysqli('localhost', 'my_user', 'my_password', 'my_db');
致命错误:未捕获 mysqli_sql_exception:在 C:\xampp\htdocs bc_international_school\get_students.php:21 中未选择数据库 堆栈跟踪:#0 C:\xampp\htdocs bc_international_school\get_students.php(21):mysqli->query ('SELECT name FR...') #1 C:\xampp\htdocs bc_international_school\index.php(8): include('C:\xampp\htdocs...') #2 {main} 抛出在 C 中:\xampp\htdocs bc_international_school\get_students.php 第 21 行
尝试这个解决方案:
$db = mysqli_connect($host,$username,$password);
$resultado = mysqli_select_db($db, $dbname);