0

フォームに入力された情報でデータベースの行を更新するphp UPDATEスクリプトがあります。

次の名前の列があります。status

および次の名前の列:resolved

if is equalに変更resolvedする必要があります。1statusDoneresolved0

私はこれを思いつきましたが、機能していないようです。コードはエラーなしで正常に実行されます。ただし、解決されたフィールドは変更されません。

 ...

    if (mysqli_connect_errno())
  {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
  }

mysqli_query($con,"UPDATE affiliate_tasks SET status= '$_POST[task_status_edit]',task_name = '$_POST[task_name_edit]',due_date = '$_POST[task_date_edit]',if ($_POST[task_status_edit] == 'Done') {
    resolved = '1'
}
else{
    resolved = '0'
    }
WHERE task_id='$_POST[task_id]'");


echo '<meta http-equiv="Refresh" content="0;url=http://www.green-panda.com/website/panda/affiliates/task.php?msg=' . urlencode(base64_encode('A task was updated!')) . '">';

?>
4

3 に答える 3

4

SQL ステートメントに PHP が混在しているため、無効なステートメントが作成されます (これはまさにエラー メッセージが示す内容です: You have an error in your SQL syntax)。注意: SQL は PHP に依存しません。

クエリを実行する$_POST[task_status_edit] 前にの値を確認し、resolvedそれに応じて変数を設定する必要があります。次に、クエリを実行します。

$resolved = $_POST['task_status_edit'])=='Done'?1:0;

mysqli_query($con,"UPDATE affiliate_tasks 
                   SET resolved='$resolved', 
                       status= '$_POST[task_status_edit]',
                       task_name = '$_POST[task_name_edit]',
                       due_date = '$_POST[task_date_edit]' 
                   WHERE task_id='$_POST[task_id]'");
于 2013-06-08T08:59:13.810 に答える
1

これはどうですか:

($_POST[task_status_edit] == 'Done')?1:0;

これを if else 構造に置き換えて追加できます。

mysqli_query($con,"UPDATE affiliate_tasks SET status= '$_POST[task_status_edit]',
task_name = '$_POST[task_name_edit]',
due_date = '$_POST[task_date_edit]',
resolved=".($_POST[task_status_edit] == 'Done')?1:0 ."
WHERE task_id='$_POST[task_id]'");
于 2013-06-08T09:01:15.093 に答える
1

そのようです...

if($_POST['task_status_edit']=='Done'){
  $resolved =1;} else {$resolved=0;}


mysqli_query($con,"UPDATE affiliate_tasks SET resolved='$resolved', status= '$_POST[task_status_edit]',task_name = '$_POST[task_name_edit]',due_date = '$_POST[task_date_edit]' WHERE task_id='$_POST[task_id]'");

または、より簡単なワンライナーの方法...

mysqli_query($con,"UPDATE affiliate_tasks SET status= '$_POST[task_status_edit]', task_name = '$_POST[task_name_edit]', due_date = '$_POST[task_date_edit]', resolved=".($_POST[task_status_edit] == 'Done')?1:0 ." WHERE task_id='$_POST[task_id]'");
于 2013-06-08T09:02:44.670 に答える