1

これが正しく動作していないphpの私のコードです....

if条件にあるクエリを取得しておらず、else部分を実行するたびに....

  <?php
  include('admin/class.php');

**これが私のDB接続です**

  $hostname="localhost";
  $username="root";
   $password="";

 $dbhandle = mysql_connect($hostname, $username, $password)
 or die("Unable to connect to MySQL");
  echo "Connected to MySQL<br>"; 
  $se = mysql_select_db("timesheet1234",$dbhandle)
  or die("Could not select timesheet1234");
 echo "connected to db";

 if(isset($_POST['save']))
   {  
   echo "post if";

 $sel=@$_POST['selpro'];
  $mon=@$_POST['mon'];
  $tue=@$_POST['tue'];
  $wed=@$_POST['wed'];
  $thu=@$_POST['thu'];
  $fri=@$_POST['fri'];
  $sat=@$_POST['sat'];
   $sun=@$_POST['sun'];

問題が発生し、正しく動作しない私のコードは次のとおりです

  if(isset($_SESSION['user']))
  {
   echo "session user";
        $sql="UPDATE empdaytimesheet SET `project  code`='$sel',`mon`='$mon',`tue`='$tue',`wed`='$wed',`thu`='$thu',`fri`='$fri',`sat`='$sat',`sun`='$sun' where `username`='".$_SESSION['user']."'";

 $res=mysql_query($sql,$dbhandle);
 if($res){
 echo "<script type='text/javascript'>";
 echo "alert('TimeSheet Saved..!')";
 echo "</script>";
 echo "<script type='text/javascript'>";
 echo "window.location='my_timesheet.php'";
 echo "</script>";
 }
  else
 {
 echo "<script type='text/javascript'>";
  echo "alert('Some Error Occured ! Retry..!')";
 echo "</script>";
 echo "<script type='text/javascript'>";
echo "window.location='my_timesheet.php'";
echo "</script>";
}
}
}
?>
4

2 に答える 2

2

変化する

$sql="UPDATE table empdaytimesheet SET project  code='$sel',...

$sql="UPDATE empdaytimesheet SET `project  code`='$sel', ...
             ^ no table here     ^             ^ backticks
于 2013-05-11T07:13:35.923 に答える
2
UPDATE table empdaytimesheet SET...

は有効な SQL ではありません。あなたがしようとしていることは、おそらく次のとおりです。

UPDATE empdaytimesheet SET...

また、スペースを含む列名は、MySQL の場合はバッククォートで囲む必要があります。

UPDATE empdaytimesheet SET `project code`=...

ただし、注意する必要があるのは、SQL インジェクションに対してオープンであることです。誰かselが単一引用符を含む値を投稿すると、SQL を書き換えることができます。たとえば、Fiddlerselを使用して asの値を投稿する',username='と、SQL によってテーブルのユーザー名列も更新されます。

UPDATE empdaytimesheet SET `project code`='',username='',mon=...

一般に、未チェックの post 変数を SQL 文字列に入れるだけでは良くありません。mysql_*これがAPI が廃止された大きな理由の 1 つであり、PDOAPIにはmysqliこれを処理するためのメソッドがあります。

于 2013-05-11T07:12:55.297 に答える