没有使用PHP将值插入MySQL表

时间:2016-03-22 04:24:11

标签: php mysqli html-table connect

我尝试了很多不同的代码,但仍然没有插入到我的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";
<?

这是我的桌面结构:

here's my table structure

成功但未插入数据

succeed but no data in my query

应该在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>&nbsp;</td>

6 个答案:

答案 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 injectionprepared 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>&nbsp;</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;];