0

したがって、データベースからすべての日付を取得し、それらに 1 日を dd/mm/yy 形式で追加するスクリプトを作成しようとしています。エラーのトラブルシューティングは正常に機能し、スクリプトは正常に機能します。私のSQLデータベース....

エラー: 'where 句' に不明な列 "sorting" があります

ここにあります:

<?      
$usernamedb = "goldacco"; // connect da jeg skal bruge det senere
$passworddb = "26102610asd";
$database = "goldacco_fb";
$server = "127.0.0.1";

$db_handle = mysql_connect($server, $usernamedb, $passworddb);
$db_found = mysql_select_db($database, $db_handle);

$i=0;
$f=0;

   $sql_sort = "SELECT sorting FROM feedback WHERE approved='1' ORDER BY sorting ASC"; // get lowest sorting
   $result_sort = mysql_query($sql_sort);
   $sorting = mysql_fetch_assoc($result_sort);

   $sorting[$f] = $sorting['sorting']; // 405



   $sql = "SELECT date FROM feedback WHERE approved='1' ORDER BY sorting ASC"; // get date
   $result_date = mysql_query($sql);

  while ($row = mysql_fetch_assoc($result_date) OR die(mysql_error())) { // værdigen jeg har gemt

       $olddate[$i] = $row['date'];

   $new_date[$i] = substr($olddate[$i], 0, -6); //  day

   $new_date[$i] = str_replace("/", null, $new_date[$i]); // fjern /

   $new_month[$i] = substr($olddate[$i], 2, -3); // month

   $new_month[$i] = str_replace("/", null, $new_month[$i]); // fjern /

   $new_year[$i] = substr($olddate[$i], 5-0); // år

   $new_year[$i] = str_replace("/", null, $new_year[$i]); // fjern /



   $new_date[$i] = $new_date[$i]+1;

  if ($new_date[$i] == 32) { // check om det er den 31, hvis ja, sæt til 0
    $new_date[$i] = 1;
    $new_month[$i] = $new_month[$i] +1;
  }

  if ($new_month[$i] == 13) { // check om det er den 12, hvis ja, sæt til 0
     $new_month[$i] = 1;
     $new_year[$i] = $new_month[$i] +1;
  }


  $new_date[$i] = sprintf("%02s", $new_date[$i]);
  $new_month[$i] = sprintf("%02s", $new_month[$i]);


  $new_total[$i] = $new_date[$i] . "/" . $new_month[$i] . "/" . $new_year[$i];

  $sql_into = "UPDATE feedback SET date=`$new_total` WHERE sorting=`$sorting[$f]`";
  $result_date = mysql_query($sql_into);

  $f++;
  $i++;
   }

?>
4

1 に答える 1

3

文字列リテラルの前後にバッククォートを使用しないでください。一重引用符にする必要があります。バッククォートは識別子用です。

UPDATE feedback 
SET    date = '$new_total' 
WHERE  sorting='$sorting[$f]'

補足として、変数のSQL Injection値が外部から取得された場合、クエリは脆弱です。予防方法については、以下の記事をご覧ください。を使用すると、値を一重引用符で囲む必要がなくなります。PreparedStatements

于 2013-02-08T01:22:06.910 に答える