2

我正在将所有使用 PHP MySQL 的查询更改为 MySQLi。

我用连接设置创建了一个名为 db.php 的文件。

该文件包括

<?php
$db = new mysqli('localhost','mysqlusername','mysqlpassword');
echo "<h1>Success database connection</h1>";
if($db->connect_errno > 0)
{
die('No connection [' . $db->connect_error . ']');
}
?>

我将文件包含在:

require_once "/location/db.php";    

之后我使用:

 if($db->connect_error)
 {
   echo "Not connected, error: ".$db->connect_error;
 }  
 else
 {
   echo "Connected.";
 }

它回显已连接,因此我认为我的连接良好。

我有 3 个 PHP 变量要插入到我的数据库表代码中

我首先回显变量,所以我确定它们有内容。

在我验证我的连接正常(返回已连接)并回显我想要执行查询的变量的内容后:

$sql = "INSERT INTO 'Code' (`Name`, `Code`, `Admin`)
VALUES ('$name', '$code', '$admin')"; 
echo $sql;//show query
// Performs the $sql query on the server to insert the values
if ($db->query($sql) === TRUE)
{
    echo 'User Created.';
}
else 
{
    echo 'Errorcreating : '. $db->error;
}

我收到消息错误创建:未选择数据库

我有 echo $sql 来显示查询。

如果我直接在 SQL 中复制查询,它就可以正常工作。

这是我第一次使用 MySQLi,所以我可能犯了一个非常愚蠢的错误,但我找不到它。

4

4 回答 4

5

打开连接时,您可以将数据库名称作为第四个参数传递:

$db = new mysqli('localhost','mysqlusername','mysqlpassword','database');

此外,您的转义字符是错误的。不要在表名周围使用单引号,而是使用反引号运算符

$sql = "INSERT INTO `Code` (`Name`, `Code`, `Admin`)VALUES ('$name', '$code', '$admin')"; 
于 2013-05-07T12:21:24.640 回答
2

实际上,您确实没有选择任何数据库。您已连接到数据库服务器,那里可能有数百个数据库。您需要指定要将查询发送到哪一个!

您的查询很好,当您直接输入它时它可以工作,因为当您这样做时,您已经指定了要使用的数据库。

于 2013-05-07T12:20:57.843 回答
1

您尚未在代码中选择您的数据库。根据php.net中的this page,mysqli_connect或mysqli构造函数中有一个参数,您可以输入数据库名称。

这是一个简单的例子:

<?php
$mysqli = new mysqli('localhost', 'my_user', 'my_password', 'my_db');
于 2013-05-07T12:23:47.087 回答
-1

尝试这个

<?php
$servername = "localhost";
$username = "username";
$password = "password";
// Create connection
$conn = mysqli_connect($servername, $username, $password);
// Check connection
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
echo "Connected successfully";
?>
于 2016-11-27T19:02:29.433 回答