有什么原因,为什么我的PHP脚本中的查询不起作用?

时间:2019-07-12 07:24:45

标签: php mysql database

我得到了在mysql中建立数据库的指令,该数据库用于存储来自同事的数据。数据库运行良好。我做了读取数据库的表,没有问题。但是我现在要继续制作配方。

$sql = "INSERT INTO personaldaten (id, pid, user_status, ue_vorname, ue_nachname, ue_position, ue_firma) VALUES ('3', '$pnr', '1', '$vn', '$nn', '$pst', '$firma')";

这是我正在使用的查询,我已经查询了很长时间,但没有发现任何错误。也许在其他代码中?

$db = new mysqli('XXXXX', 'XXXXX', 'XXXXX', 'XXXXX');

    if($db->connect_error){
      die('Connect Error('.$db->connect_error.')'.$db->connect_error);
    }

    $sql = "INSERT INTO personaldaten (id, pid, user_status, ue_vorname, ue_nachname, ue_position, ue_firma) VALUES ('3', '$pnr', '1', '$vn', '$nn', '$pst', '$firma')";

    if (mysqli_query($db, $sql)) {
      echo "Erfolg!";
    } else {
      echo "Error: " . $sql . "<br>" . mysqli_error($conn);
    }

  mysqli_close($db);

如果有人可以帮助:D

更新:

我得到的错误是:

Duplicate entry '3-123456' for key 'PRIMARY'

4 个答案:

答案 0 :(得分:0)

更改代码

 $sql = "INSERT INTO personaldaten (id, pid, user_status, ue_vorname, ue_nachname, ue_position, ue_firma) VALUES ('3', '$pnr', '1', '$vn', '$nn', '$pst', '$firma')";

 $sql = "INSERT INTO personaldaten ( pid, user_status, ue_vorname, ue_nachname, ue_position, ue_firma) VALUES ( '$pnr', '1', '$vn', '$nn', '$pst', '$firma')";

答案 1 :(得分:0)

从您的查询中删除ID,应该可以。

$sql = "INSERT INTO personaldaten (pid, user_status, ue_vorname, ue_nachname, ue_position, ue_firma) VALUES ('$pnr', '1', '$vn', '$nn', '$pst', '$firma')";

答案 2 :(得分:0)

$ sql =“ INSERT INTO personaldaten(id,pid,user_status,ue_vorname,ue_nachname,ue_position,ue_firma)值('3','$ pnr','1','$ vn','$ nn', '$ pst','$ firma')“;

如果id是Db中的自动增量,则不发送它,它将自动添加。它将由数据库处理。

如果不是,则每次发送增量值。不会重复的值。

答案 3 :(得分:0)

如果表中的列id设置为自动递增,则可以在插入数据时将其忽略。将为您生成下一个ID。

这是您的代码的外观。我还为您删除了SQL注入错误。

<?php

mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$db = new mysqli('XXXXX', 'XXXXX', 'XXXXX', 'XXXXX');

$sql = "INSERT INTO personaldaten (pid, user_status, ue_vorname, ue_nachname, ue_position, ue_firma) VALUES (?, 1, ?, ?, ?, ?)";
$stmt = $db->prepare($sql);
$stmt->bind_param('sssss', $pnr, $vn, $nn, $pst, $firma);
$stmt->execute();

如果使用mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);

,则无需显示mysqli错误。

您也不需要关闭连接。