【问题标题】:INSERT INTO MySQLi statement not working after first time第一次后 INSERT INTO MySQLi 语句不起作用
【发布时间】:2013-03-17 22:02:13
【问题描述】:

我有一个相当标准的 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 实际上正在通过,但是当我检查数据库中的表时,没有新行。关于为什么不创建新行的任何想法?

【问题讨论】:

标签: php mysql post mysqli sql-insert


【解决方案1】:

将您的 query 更改为

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

您会立即看到问题所在。 还有

 if (isset($result_add)) {

将始终为真,因为 $result_add 将是 truefalse 用于您的插入。

【讨论】:

  • 太棒了!这是表结构上的错误。 company_name 变量被意外设置为主索引,所以它不会让我做两个相同的行。谢谢!
【解决方案2】:

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

【讨论】:

    【解决方案3】:

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

    $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-&gt;error.$result_add);,但我还没有测试过)。

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

    看表的建议也不错。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-02-25
      • 2020-03-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-04
      相关资源
      最近更新 更多