INSERT INTO MySQLi语句第一次没有工作

时间:2013-03-17 22:02:13

标签: php mysql post mysqli sql-insert

我有一个非常标准的MySQL插入语句似乎不起作用。我正在向此页面发布一个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实际上正在通过但是当我检查数据库中的表时没有新行。关于它为什么不创建新行的任何想法?

3 个答案:

答案 0 :(得分:4)

query更改为

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

您将立即看到问题。 还

 if (isset($result_add)) {

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

答案 1 :(得分:0)

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

答案 2 :(得分: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){

看表的建议也很好。

相关问题