它只是出于学校目的,所以请不要说它应该以其他方式进行,或者它不够安全。
所以这是我写的脚本。它工作正常......除了第二次以上。我第一次执行脚本时,它只创建数据库,但不创建表,也不会向其中插入数据。
这是代码
<?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;之后的条款刚被复制。因此,首先必须存在问题。
答案 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)
<强>第一强>:
检查您的表格创建<强> Secendly:强>
您应该使用相同的顺序指定每个列以插入如下数据:
$dodaj= mysqli_query($con, "INSERT INTO dane
('columnName1','columnName2','columnName3','columnName4') VALUES(NULL,'$login','$haslo','$email')")