PHP脚本创建数据库,表然后将数据插入其中

时间:2017-11-18 23:57:22

标签: php

它只是出于学校目的,所以请不要说它应该以其他方式进行,或者它不够安全。

所以这是我写的脚本。它工作正常......除了第二次以上。我第一次执行脚本时,它只创建数据库,但不创建表,也不会向其中插入数据。

这是代码

<?php
//Odebranie danych z formularza
$login=$_POST["login"];
$haslo=$_POST["haslo"];
$email=$_POST["email"];
//Połączenie z bazą danych i wejście w nią
$con= mysqli_connect('localhost','root','')
or die('Brak połączenia z serwerem MySQL');
//Wejście do bazy danych 'strona'
$bazadanych= mysqli_select_db($con, 'strona');
if(!$bazadanych) {
   $sql = 'CREATE DATABASE strona CHARACTER SET utf8 COLLATE utf8_general_ci;';
   $sql2= mysqli_query($con,$sql);
   $query = "SELECT ID FROM dane";
   $result = mysqli_query($con, $query);
     if(empty($result)) {
       $query = "CREATE TABLE dane (
       ID int(11) AUTO_INCREMENT, login varchar(255), haslo varchar(255), email varchar(255), PRIMARY KEY  (ID))";
       $result = mysqli_query($con, $query);
       $dodaj= mysqli_query($con, "INSERT INTO dane VALUES(NULL,'$login','$haslo','$email')")
       or die('Nie moge1');
     }
     else {
       $dodaj= mysqli_query($con, "INSERT INTO dane VALUES(NULL,'$login','$haslo','$email')")
       or die('Nie moge2');
     }
}
else {
   $query = "SELECT ID FROM dane";
   $result = mysqli_query($con, $query);
     if(empty($result)) {
       $query = "CREATE TABLE dane (
       ID int(11) AUTO_INCREMENT,
       login varchar(255),
       haslo varchar(255),
       email varchar(255),
       PRIMARY KEY  (ID)
        )";
       $result = mysqli_query($con, $query);
       $dodaj= mysqli_query($con, "INSERT INTO dane VALUES(NULL,'$login','$haslo','$email')")
       or die('Nie moge3');
     }
     else {
       $dodaj= mysqli_query($con, "INSERT INTO dane VALUES(NULL,'$login','$haslo','$email')")
       or die('Nie moge4');
     }
}
//Zamknięcie połączenia z bazą danych
mysqli_close($con);
//Po udanej rejestracji, przekierowanie do strony głównej
header('Location: index.html');
?>

所以在第一次执行时,它向我展示了Nie moge1&#39;所以这意味着创建表和插入数据存在问题。但是在第二次执行时它完美运行,最好的是这个&#39;否则&#39; nie moge 2&#39;之后的条款刚被复制。因此,首先必须存在问题。

2 个答案:

答案 0 :(得分:1)

创建数据库后,您必须在创建表格之前连接到数据库
mysqli_select_db($con, 'strona');

您无法在AUTO_INCREMENT键上指定NULL。

此INSERT有效:

INSERT INTO `strona`.`dane` (`login`, `haslo`, `email`) VALUES ( 'x', 'y', 'z')

我用它来创建表格:

$sql = "CREATE TABLE IF NOT EXISTS `dane` (
`ID` int(11) NOT NULL,
  `login` varchar(255) DEFAULT NULL,
  `haslo` varchar(255) DEFAULT NULL,
  `email` varchar(255) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;";


我已将die('Nie mogeX')替换为

echo "Nie mogeX" . mysqli_error($con);


答案 1 :(得分:-2)

<强>第一

使用this answer

检查您的表格创建

<强> Secendly:

您应该使用相同的顺序指定每个列以插入如下数据:

    $dodaj= mysqli_query($con, "INSERT INTO dane 
 ('columnName1','columnName2','columnName3','columnName4') VALUES(NULL,'$login','$haslo','$email')")