我尝试了很多不同的代码,但仍然没有插入到我的MySQL
表中。这就是我到目前为止所拥有的:
<?php
$con=mysqli_connect("localhost", "root", "","jpn") or die("Cannot connect to server.".mysqli_error($con));
$idkerja=@$_POST["ID Pekerja"];
$nama=@$_POST["nama"];
$unit=@$_POST["Unit"];
$pass=@$_POST["Password"];
$tel=@$_POST["Telefon"];
$insert_sql="INSERT INTO daftar VALUES('$idkerja', '$nama', '$unit', '$pass','$tel')";
$sql_result =mysqli_query($con,$insert_sql) or die("Error in inserting data due to".mysqli_error($con));
if($sql_result)
echo "Succesfully insert new data.";
else
echo "Error in inserting new data";
<?
这是我的桌面结构:
成功但未插入数据
应该在MySQL表中插入的HTML表单:
<td><form method="post" action="daftar.php">
<label for="textfield2">ID Pekerja:</label><br>
<input type="text" name="textfield2" id="textfield2">
<br/>
<label for="textfield2">Nama:</label><br>
<input type="text" name="textfield" id="textfield">
<br/>
<label for="textfield2">Unit:</label><br>
<input type="text" name="textfield2" id="textfield2">
<br/>
<label for="textfield2">Password:</label><br>
<input type="text" name="textfield2" id="textfield2">
<br/>
<label for="textfield2">Nombor Telefon:</label><br>
<input type="text" name="textfield2" id="textfield2">
<br/>
</center>
</div>
</form> </td>
答案 0 :(得分:3)
您的数据已插入您的表格(截图显示),尽管数据为空。那是因为你的输入值不正确。
首先根据PHP脚本的要求更正html字段名称:
<td>
<form method="post" action="daftar.php">
<label for="textfield2">Nama:</label><br>
<input type="text" name="nama" id="name">
<br/>
<label for="textfield2">Unit:</label><br>
<input type="text" name="Unit" id="Unit">
<br/>
<label for="textfield2">Password:</label><br>
<input type="text" name="Password" id="Password">
<br/>
<label for="textfield2">Nombor Telefon:</label><br>
<input type="text" name="Telefon" id="Telefon">
<br/>
</form>
</td>
然后在表单提交后验证用户提交的数据;确保所有字段都具有根据您的表结构的值,所有字段都是必需的并且必须具有值;验证类似的内容:
使用以下代码:
$nama = @$_POST["nama"];
$unit = @$_POST["Unit"];
$pass = @$_POST["Password"];
/* casting to make sure integer value for this field(Telefon) */
$tel = (int) @$_POST["Telefon"];
/* validate data submitted by user */
$hasError = false;
$error = '';
if(empty($nama)){
$error .= 'nama field required.';
$hasError = true;
}
if(empty($unit)){
$error .= 'unit field required.';
$hasError = true;
}
if(empty($pass)){
$error .= 'password field required.';
$hasError = true;
}
if(empty($tel)){
$error .= 'Telefon field required.';
$hasError = true;
}
/* after data validation check that can we insert data or not */
if($hasError){
/* notify user that this field is required. */
die($error);
}else{
/* here we go user inserted data as required */
/* connect to db */
$con = mysqli_connect("localhost", "root", "", "jpn") or die("Cannot connect to server." . mysqli_error($con));
$insert_sql = "INSERT INTO daftar VALUES(NULL, ?, ?, ?, ?)";
if($stmt = mysqli_prepare($con, $insert_sql)){
mysqli_stmt_bind_param($stmt, "sssi", $nama, $unit, $pass, $tel);
mysqli_stmt_execute($stmt);
if(mysqli_affected_rows($con)){
echo "Succesfully insert new data.";
}else{
echo "Error in inserting new data" . mysqli_error($con);
}
}else{
die("Error in inserting data due to" . mysqli_error($con));
}
}
详细了解SQL injection和prepared statement以防止此
答案 1 :(得分:0)
您应该重新检查语法。
按照:
INSERT INTO table_name (column1, column2, column3,...)
VALUES (value1, value2, value3,...)
我建议你遵循上面的语法。
另外,检查数据库表字段的数据类型。
希望这有帮助。
和平!的xD
答案 2 :(得分:0)
检查您的HTML表单代码
&lt; name属性的值输入&gt; tag应该用作POST变量
即
<input type="text"
name="textfield2"
id="textfield2">
然后
$variable = $_POST['textfield2'];
答案 3 :(得分:0)
试试这个
$insert_sql = "INSERT INTO daftar(add column names here )VALUES('$_POST[ID]','$_POST[name]','$_POST[Unit]','$_POST[Password]',$_POST[Telefon])";
答案 4 :(得分:0)
您正在向数据库添加NULL
值,因为form
input
共享相同的name
属性,而$_POST['nama']
甚至不存在。至于电话,请验证并确保用户输入为int
,不包括+
等字符。
您的表单应如下所示:
<td><form method="post" action="daftar.php">
<label for="textfield2">ID Pekerja:</label><br>
<input type="text" name="id" id="textfield2">
<br/>
<label for="textfield2">Nama:</label><br>
<input type="text" name="nama" id="textfield">
<br/>
<label for="textfield2">Unit:</label><br>
<input type="text" name="Unit" id="textfield2">
<br/>
<label for="textfield2">Password:</label><br>
<input type="text" name="Password" id="textfield2">
<br/>
<label for="textfield2">Nombor Telefon:</label><br>
<input type="text" name="Telefon" id="textfield2">
<br/>
</center>
</div>
</form> </td>
为什么你有ID
的输入?这当然不是必需的,建议单独使用并自行增加。
使用最佳做法。列出所需的所有列及其值。即:
INSERT INTO daftar(nama, unit, pass, tel)VALUES('$_POST[name]','$_POST[Unit]','$_POST[Password]',$_POST[Telefon])
此外,您的代码对SQL注入是开放的。使用预备语句来避免这种情况。您可以了解更多here
答案 5 :(得分:0)
你的帖子名称错了。输入类型ex的使用名称。输入类型=&#34;文字&#34;命名=&#34; ID&#34; ID =&#34;文本字段2&#34;然后使用输入类型$ idkerja = @ $ _ POST [&#34; id&#34;];