Php 首次插入MySQLi语句后不起作用

Php 首次插入MySQLi语句后不起作用,php,mysql,post,mysqli,sql-insert,Php,Mysql,Post,Mysqli,Sql Insert,我有一个非常标准的MySQL insert into语句,它似乎不起作用。我在这个页面上发布了一个HTML表单,它正在翻译信息并插入到表中(待定的工作)。它第一次起作用,之后就再也没有起作用了。我不想更新行,但每次提交代码时都会添加一个全新的行,所以我觉得这很简单。代码如下: <?php include('includes/connect.php'); $id=$mysqli->real_escape_string($_POST['id']); $sql = "SELECT * FR

我有一个非常标准的MySQL insert into语句,它似乎不起作用。我在这个页面上发布了一个HTML表单,它正在翻译信息并插入到表中(待定的工作)。它第一次起作用,之后就再也没有起作用了。我不想更新行,但每次提交代码时都会添加一个全新的行,所以我觉得这很简单。代码如下:

<?php
include('includes/connect.php');
$id=$mysqli->real_escape_string($_POST['id']);
$sql = "SELECT * FROM users WHERE id='$id'";
$result = $mysqli->query($sql);
$row = mysqli_fetch_array($result);

$user_id = $_SESSION['user_id'];

$company_name = $row['company_name'];
$date_registered = $row['date_registered'];
$job_title=$mysqli->real_escape_string($_POST['jobtitle']);
$job_description=$mysqli->real_escape_string($_POST['jobdescription']);
$salary=$mysqli->real_escape_string($_POST['salary']);
$industry_sector=$mysqli->real_escape_string($_POST['industry']);
$number_people=$mysqli->real_escape_string($_POST['num_people']);

if(isset($_POST['payment']) && $_POST['payment']=='yes'){
$payment_received = 'Yes';
}
else{
$payment_received = 'No';
}

$sql_add = "INSERT INTO pending_jobs (company_name, job_title) VALUES ('$company_name', '$job_title')";
$result_add = $mysqli->query($sql_add);

if(isset($result_add)){
  session_start();
  $id = $row['id'];
   $_SESSION['user_id'] = $user_id;
  header('location:profile.php?id='.$id);
} else {
echo "<script>alert('".$job_title."');</script>";
}
?>

唯一列或索引可能会阻止此insert语句。只需在phpmyadmin或mysql控制台中测试相同的插入。此外,即使$result\u add为false,isset()也将为true:)

唯一的列或索引可能会阻止此insert语句。只需在phpmyadmin或mysql控制台中测试相同的插入。此外,即使$result\u add为false:)

query
更改为

$result_add = $mysqli->query($sql_add) or die($mysqli->error);
你会立刻发现问题所在。 也


始终为真,因为插入时,
$result\u add
将是
true
false
以进行插入。

query
更改为

$result_add = $mysqli->query($sql_add) or die($mysqli->error);
你会立刻发现问题所在。 也


将始终为true,因为插入时,
$result\u add
将为
true
false

如果语句失败,请尝试返回错误,这样您就知道出了什么问题

$sql = "SELECT * FROM users WHERE id='$id'";
$result = $mysqli->query($sql) or die("cannot select from users");

$result_add = $mysqli->query($sql_add) or die("cannot insert");
(有些人建议使用
或trigger\u error(mysqli->error.$result\u add);
但我还没有测试过这一点)


查看该表的建议也很好。

如果语句失败,请尝试返回错误,这样您就知道出了什么问题

$sql = "SELECT * FROM users WHERE id='$id'";
$result = $mysqli->query($sql) or die("cannot select from users");

$result_add = $mysqli->query($sql_add) or die("cannot insert");
(有些人建议使用
或trigger\u error(mysqli->error.$result\u add);
但我还没有测试过这一点)


查看表格的建议也很好。

有趣的案例。。。您是否已将任何字段设置为
唯一
?这就解释了沉默的失败。您可以尝试获取错误:有趣的案例。。。您是否已将任何字段设置为
唯一
?这就解释了沉默的失败。您可以尝试获取错误:太好了!这是桌子结构上的一个错误。company_name变量被意外设置为主索引,因此它不允许我对同一行执行两个操作。谢谢太好了!这是桌子结构上的一个错误。company_name变量被意外设置为主索引,因此它不允许我对同一行执行两个操作。谢谢