我有两个PHP文档。一个连接到我的MySQL服务器和数据库(如果它不存在,它也将创建数据库)。该文档的标题为“db_connect.php”。我的下一个PHP文档标题为“create.php”,它旨在连接到数据库中的特定表,并创建该表(如果它不存在)。还有一个javascript文档涉及到这使得用户可以输入内容并将其输入到表中而不刷新页面。我认为你不需要这份文件,所以我不会把它包括在内,但我认为你们可能会发现这对于留言板很有帮助。
这是我的db_connect.php文件:
<?php
$db = "my_db";
//establish a connection with the server
$connection = mysqli_connect('localhost', 'username', 'password');
if(!$connection){
exit("<p>Could not establish a connection :" . mysqli_connect_error() . "</p>");
}
//connect to the database
$dbSelect = mysqli_select_db($connection, $db);
if(!$dbSelect){
// Create database
$sql="CREATE DATABASE " . $db;
if (mysqli_query($connection, $sql)) {
} else {
echo "<p>Error creating database: " . mysqli_error($connection) . "</p>";
}
}
?>
这是我的create.php文件:
<?php
//connect to the database
include('db_connect.php');
$table = 'NDI';
//update the table if the notes are posted
if(isset($_POST['notes'])){
$notes=$_POST['notes'];
$name=$_POST['name'];
$file = $_POST['file'];
$file2 = $_FILES['file'];
echo "<p>Hello $file $file2</p>";
/////////////////////////////////////////////
//Check for file type
/////////////////////////////////////////////
if ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/png")
|| ($_FILES["file"]["type"] == "image/x-png")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/jpg")
|| ($_FILES["file"]["type"] == "image/pjpeg")
|| ($_FILES["file"]["type"] == "application/x-shockwave-flash")
)
&& ($_FILES["file"]["size"] < 999000)){
/////////////////////////////////////////////
//Check for errors
/////////////////////////////////////////////
if ($_FILES["file"]["error"] > 0){
echo "Error: " . $_FILES["file"]["error"] . "<br />";
}else{
///////////////////////////////////////////
//Set the upload
///////////////////////////////////////////
echo "Upload: " . $_FILES["file"]["name"] . "<br />";
echo "Type: " . $_FILES["file"]["type"] . "<br />";
echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />";
echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br />";
/////////////////////////////////////////////////////////
//Check to see if file exists already
/////////////////////////////////////////////////////////
if (file_exists("../uploads/" . $_FILES["file"]["name"])){
//echo $_FILES["file"]["name"] . " already exists. ";
$_FILES["file"]["name"] = rand(1, 1000).$_FILES["file"]["name"];
}
////////////////////////////////////////////////////////////
//If not, move to the upload folder
////////////////////////////////////////////////////////////
$path = '../uploads/';
$tmp_name = $_FILES["file"]["tmp_name"][$key];
$fn = basename( $_FILES['file']['name']);
move_uploaded_file($_FILES['file']['tmp_name'], $path.$fn);
//move_uploaded_file($_FILES["file"]["tmp_name"],
//"../uploads/" . $_FILES["file"]["name"]);
echo "Stored in: ../uploads/". $_FILES["file"]["name"];
$myImg = "../uploads/" . $_FILES['file']['name'];
//echo "\n $myImg";
}
//echo "<a href=../uploader/>Back</a>";
}else{
echo "Invalid file";
//echo $_FILES["file"]["type"];
}
if(!$myImg){
$myImg="../uploads/blank.png";
}
if(!$name){
$name="anonymous";
}
$sql= "INSERT INTO `$table` SET `name` = '$name', `notes`='$notes', `img`='$myImg'";
if (mysqli_query($sql)) {
echo '<p>Entry added</p>';
echo '<p><a href="index.php">' . $title . ' Home</a> </p>';
} else {
echo '<p>Error adding page: ' . mysqli_error() . '</p>';
}
}
//display results
$choices = mysqli_query("select * from " . $table);
if(!$choices){
// Create table
$sqlc="CREATE TABLE $table(`id` INT(5) AUTO_INCREMENT, `img` VAR_CHAR(50), `name` VAR_CHAR(25), `notes` TEXT(500))";
// Execute query
if (mysqli_query($connection, $db, $sqlc)) {
} else {
echo "Error creating table: " . mysqli_error($connection, $db);
}
}
while($row = mysqli_fetch_array($choices)){
$img=$row['img'];
$note=$row['notes'];
$name=$row['name'];
echo "<p class='note'><img src='$img'><span class='name'>$name: </span>$note</p>";
}
?>
我遇到的问题是页面回显错误:“创建表错误:”但它没有给我任何我告诉它的错误细节;所以我真的不知道该怎么做。你们给予的任何反馈都将非常感激。
答案 0 :(得分:1)
我可能错了,但在调用mysqli_query和mysqli_error
时尝试省略$ db变量 if (mysqli_query($connection, $sqlc)) {
...
echo "Error creating table: " . mysqli_error($connection);
这有帮助吗?
答案 1 :(得分:1)
更改此行:
$sqlc="CREATE TABLE $table(`id` INT(5) AUTO_INCREMENT, `img` VAR_CHAR(50), `name` VAR_CHAR(25), `notes` TEXT(500))";
到
$sqlc="CREATE TABLE $table(`id` INT(5) AUTO_INCREMENT, `img` VARCHAR(50), `name` VARCHAR(25), `notes` TEXT(500), PRIMARY KEY (`id`))";
它是VARCHAR
而不是VAR_CHAR
加上你需要为auto_increment添加一个主键。
引自http://www.tizag.com/mysqlTutorial/mysqltables.php
PRIMARY KEY用作行的唯一标识符。在这里,我们制作了&#34; id&#34;该表的PRIMARY KEY。这意味着没有两个ID可以相同,否则我们将遇到麻烦。这就是我们制作&#34; id&#34;上一行代码中的自动递增计数器。
换句话说,MySQL需要一列来唯一标识一行。
答案 2 :(得分:0)
尝试编写包含数据库名称的create SQL 订单 像这样:
create table databasename.yourTable(etc table syntax)