2013-03-17 100 views
1

我有一个非常标准的MySQL插入语句,似乎没有工作。我将HTML表单发布到此页面,并将信息翻译并插入表格(pending_jobs)。它第一次工作,并且从那以后一直没有工作。我不想更新行,但每次提交代码时都添加一个全新的代码,所以我认为这很简单。下面的代码:INSERT INTO MySQLi声明在第一次后不工作

<?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实际经历,但是当我在数据库中检查表没有新行。任何想法为什么它不会创建一个新的行?

+2

有趣的情况下...你有没有设置任何字段为'UNIQUE'?这将解释沉默的失败。你可以尝试获取错误:http://php.net/manual/en/mysqli.error.php – 2013-03-17 22:04:00

回答

4

更改query

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

,你会马上看到问题isset()函数将是真实的。 也

if (isset($result_add)) { 

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

+0

太棒了!这是对桌子结构的错误。 company_name变量被偶然设置为主索引,所以它不会让我做两行同一行。谢谢! – MillerMedia 2013-03-17 22:32:45

0

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

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){ 

看表中的建议是也是一个很好的一个。