Php 创建数据库查询失败

Php 创建数据库查询失败,php,mysql,pdo,mysqli,Php,Mysql,Pdo,Mysqli,好的,我正在测试我的安装脚本,我得到一个错误,数据库不存在,这意味着数据库创建查询失败 这是我的全部代码: <?php if(!file_exists('install.lock')) { if(!isset($_GET['success'])) { echo " <!DOCTYPE HTML> <head> <title> Lorem Ipsum Dolor </title> <link href='../assets

好的,我正在测试我的安装脚本,我得到一个错误,数据库不存在,这意味着数据库创建查询失败

这是我的全部代码:

<?php
if(!file_exists('install.lock')) {
if(!isset($_GET['success'])) {
echo "
<!DOCTYPE HTML>
<head>
    <title> Lorem Ipsum Dolor </title>
    <link href='../assets/css/style.css' rel='stylesheet'>
    <style type='text/css'>
      body {
        text-align:center;
      }
    </style>
</head>
<body>
<div id='containerAdmin'>
<br />
<h2> Lorem Ipsum </h2> <br />
<h4> Please follow the steps below to install your new copy of ticketExpress </h4> <br />
<form action='' method='post'>
<input type='text' name='dbhost' placeholder='MySQL Database Host' size='23'>
<input type='text' name='dbuser' placeholder='MySQL Database Username' size='23'>
<input type='text' name='dbpass' placeholder='MySQL Database Password' size='23'>
 <br />
<input type='text' name='admin_username' placeholder='Admin Username'> 
<input type='text' name='admin_password' placeholder='Admin Password'> <br />
<input type='text' name='sitename' placeholder='Website Name' size='23'> <br />
<input type='submit' name='install' class='btn btn-primary' value='Install'>
</form>
<p> Lorem Ipsum Dolor </p> <br />
</body>
</html>
"; 

if(isset($_POST['install'])) {
$AdminUsername = HtmlSpecialChars(strip_tags($_POST['admin_username']));
$AdminPassword = HtmlSpecialChars(strip_tags($_POST['admin_password']));
$dbhost = strip_tags($_POST['dbhost']);
$dbuser = strip_tags($_POST['dbuser']);
$dbpass = strip_tags($_POST['dbpass']);
$sitename = strip_tags($_POST['sitename']);
if(!$con) {
echo "Please configure database information in config.php";
}
$sql = "CREATE TABLE tickets
(
ID INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
Name VARCHAR(32),
Email VARCHAR(40),
Subject VARCHAR(40),
Message TEXT(500),
open VARCHAR(10),
TimeCreated VARCHAR(40),
TimeUpdated VARCHAR(40),
hash VARCHAR(100)
)";
$sql2 = "CREATE TABLE config 
(
AdminUsername VARCHAR(32),
AdminPassword VARCHAR(32)
)";
$sql3 = "INSERT INTO config (AdminUsername,AdminPassword) VALUES ('$AdminUsername','$AdminPassword')";
if(empty($AdminUsername)) {
echo "Admin Username should not be empty!";
} elseif (empty($AdminPassword)) {
echo "Admin Password should not be empty!";
} elseif(empty($dbhost)) {
echo "MySQL Database Host should not be empty!";
} elseif(empty($dbuser)) {
echo "MySQL Database User should not be empty!";
/* } elseif(empty($dbname)) {
echo "MySQL Database Name should not be empty!"; */
} elseif(empty($sitename)) {
echo "Please enter a name for your new installation (It can be whatever you want)";
}
else {
$file = fopen('../configuration/config.php','r+');
fwrite($file, '<?php $dbhost = "'. $dbhost.'"; $dbuser = "'. $dbuser.'"; $dbpass = "'. $dbpass.'"; $dbname = "lol"; $sitename = "'. $sitename.'"; $con = new mysqli ($dbhost, $dbuser, $dbpass, $dbname);');
include('../configuration/config.php');
$con->query("CREATE DATABASE lol");
$con->query($sql);
$con->query($sql2);
$con->query("DELETE FROM config");
$con->query($sql3);
fopen('install.lock','w');
header('Location: ../index.php');
}
}
}
} else {
echo "installation is locked";
}

有人知道它为什么不起作用吗?

如果我正确理解了您的代码,那么您正在将代码写入配置文件,然后包括该配置文件以访问您的连接对象。问题是——您的连接对象是在假设数据库lol已经创建的情况下构建的。那不是真的

您需要做的是在没有定义数据库的情况下声明mysqli对象,如下所示:

fwrite($file, '<?php $dbhost = "'. $dbhost.'"; $dbuser = "'. $dbuser.'"; $dbpass = "'. $dbpass.'"; $sitename = "'. $sitename.'"; $con = new mysqli ($dbhost, $dbuser, $dbpass);');

fwrite($file,”我觉得J.Robertsons的答案应该有效。您正在尝试在创建DB lol之前连接它。如果由于某种原因,在进行更改后它仍然不起作用,请将以下内容添加到connect语句中,以便您可以看到错误

or die("Could not connect: " . mysqli_error());
您的代码应该如下所示:

fwrite($file, '<?php $dbhost = "'. $dbhost.'"; $dbuser = "'. $dbuser.'"; $dbpass = "'. $dbpass.'"; $dbname = "lol"; $sitename = "'. $sitename.'"; $con = new mysqli ($dbhost, $dbuser, $dbpass)  or die("Could not connect: " . mysqli_error());');

fwrite($file,'您遇到了什么错误?在另一个页面上,它必须建立新的数据库连接,我得到数据库未找到错误:警告:mysqli::mysqli()[]:(42000/1049):C:\wamp\www\ticketextpress\configuration\config.php中的未知数据库“lol”在第1行尝试在包含属性后打印,并检查error.log中的消息。此外,我使用wamp,因此没有eror.log文件:/CREATE database lol失败。。显然MySQL没有发现这一点。那么我该怎么办?我的答案包括了正确的代码以供参考x你的问题,但我很高兴你解决了。你能把这个标记为答案吗?在上下箭头下面有一个绿色的复选标记,将它标记为答案。谢谢!
fwrite($file, '<?php $dbhost = "'. $dbhost.'"; $dbuser = "'. $dbuser.'"; $dbpass = "'. $dbpass.'"; $dbname = "lol"; $sitename = "'. $sitename.'"; $con = new mysqli ($dbhost, $dbuser, $dbpass)  or die("Could not connect: " . mysqli_error());');