我刚刚完成了使用php制作html表单的任务,该表单将信息存储在mysql数据库中。它不是制作表格,我无法弄清楚原因。这是html代码(顺便说一下我不关心sql注入因为这只是为了学校)
<?php
@$ime = $_POST['ime'];
@$prezime = $_POST['prezime'];
@$email = $_POST['email'];
@$adresa = $_POST['adresa'];
@$misljenje = $_POST['misljenje'];
$conn = mysqli_connect("localhost","root","");
mysqli_query($conn,"create database baza_podataka");
mysqli_select_db($conn,"baza_podataka");
mysqli_query($conn,"create table 'podatci' (id int primary key auto_increment, ime varchar(10), prezime varchar(10), email varchar(20), adresa varchar(20), misljenje varchar(100))");
mysqli_query($conn,"INSTERT INTO `podatci` VALUES ('$ime','$prezime','$email','$adresa','$misljenje')");
&GT;
和html
<form name="forma" action="obrada.php" method="post">
<label>Ime :</label>
<input type="text" id="ime" size="20"/><br><br>
<label>Prezime :</label>
<input type="text" id="prezime" size="20"/><br><br>
<label>E-mail :</label>
<input type="text" id="email" size="20"/><br><br>
<label>Adresa :</label>
<input type="text" id="adresa" size="40"/><br><br>
<label>Vase misljenje :</label><br><br>
<textarea name="misljenje" id="misljenje"></textarea>
</label><input type="submit" id="submit" name="submit"/>
答案 0 :(得分:0)
你有很多问题..
@$ime = $_POST['ime'];
从所有变量中删除@
。INSERT
而不是INSTERT
。$_POST
参数直接传递给您的查询,这使您100%容易受到SQL注入攻击。切换到准备好的陈述以克服这一点。答案 1 :(得分:0)
首先,我没有在您的HTML代码上看到</form>
。
尝试使用$_REQUEST['htmlvariablename'];
ime = $_REQUEST['ime'];
$prezime = $_REQUEST['prezime'];
$email = $_REQUEST['email'];
$adresa = $_REQUEST['adresa'];
$misljenje = $_REQUEST['misljenje'];
...如前所述,您很容易受到SQL注入攻击。
答案 2 :(得分:-1)
1)使用INSERT
代替INSTERT
mysqli_query($conn,"INSERT INTO `podatci` VALUES ('$ime','$prezime','$email','$adresa','$misljenje')");
2)使用mysqli_real_escape_string
3)永远不要在代码@
上使用错误抑制器,而是使用isset()来检查它是否已设置。
$conn = mysqli_connect("localhost","root","");
$ime = isset($_POST['ime']) : mysqli_real_escape_string($conn, $_POST['ime']) ? '';
$prezime = isset($_POST['prezime']) : mysqli_real_escape_string($conn, $_POST['prezime']) ? '';
$email = isset($_POST['email']) : mysqli_real_escape_string($conn, $_POST['email']) ? '';
$adresa = isset($_POST['adresa']) : mysqli_real_escape_string($conn, $_POST['adresa']) ? '';
$misljenje = isset($_POST['misljenje']) : mysqli_real_escape_string($conn, $_POST['misljenje']) ? '';
4)最后,没有必要在每次加载时创建数据库和/或表,你应该只做一次。