1

動作していないように見えるステートメントにかなり標準的な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が実際に実行されていることはわかっていますが、データベースのテーブルを確認すると、新しい行はありません。新しい行を作成しない理由について何かアイデアはありますか?

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

一意の列またはインデックスにより、この挿入ステートメントが妨げられる可能性があります。phpmyadminまたはmysqlコンソールで同じ挿入をテストするだけです。また、$ result_addがfalseの場合でも、isset()はtrueになります:)

于 2013-03-17T22:15:04.080 に答える
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 に答える