1

我有一个非常标准的 MySQL insert into 语句,它似乎不起作用。我正在向此页面发布一个 HTML 表单,它正在翻译信息并插入到表中 (pending_jobs)。它第一次奏效,此后一直没有奏效。我不想更新该行,而是在每次提交此代码时添加一个全新的行,所以我认为这将非常简单。这是代码:

<?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>";
}
?>

它正在重定向到 profile.php 页面,所以我知道 $result_add 实际上正在通过,但是当我检查数据库中的表时,没有新行。关于为什么它不会创建新行的任何想法?

4

3 回答 3

4

改变你query

$result_add = $mysqli->query($sql_add) or die($mysqli->error);

你会立即看到问题。还

 if (isset($result_add)) {

将永远是真的,因为$result_add将是truefalse为您的插入。

于 2013-03-17T22:20:08.413 回答
0

尝试在语句失败的情况下返回错误,这样你就知道出了什么问题。

$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");

(有人提出or trigger_error(mysqli->error.$result_add);,但我没有测试过)。

replace `if(isset($result_add)){` with `if($result_add){

查看表格的建议也是一个不错的建议。

于 2013-03-17T22:21:24.533 回答
0

唯一的列或索引可能会阻止此插入语句。只需在 phpmyadmin 或 mysql 控制台中测试相同的插入。此外,即使 $result_add 为假,isset() 也会为真 :)

于 2013-03-17T22:15:04.080 回答