-1

これが私のコードです

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

これはデータベース接続です

  $link = mysqli_connect("localhost", "root", "", "timesheet1234");

ここで私の保存ボタンにアクションを与えています

if(isset($_POST['save']))
{  
  $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";

を受け付けていません。mysqli

$stmt = mysqli_prepare($link,"UPDATE empdaytimesheet SET 
`projectcode`='$sel',`mon`='$mon',`tue`='$tue',`wed`='$wed',
`thu`='$thu',`fri`='$fri',`sat`='$sat',`sun`='$sun' where
`username`='".$_SESSION['user']."'");
mysqli_stmt_bind_param($stmt,"siiiiiii", $sel,$mon,$tue,$wed,$thu,$fri,$sat,$sun);

$res= mysqli_stmt_execute($stmt);

この状態にはなっていません

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

3 に答える 3

0

準備済みステートメントの使用方法が間違っています。

変数の代わりにプレースホルダーを使用する必要があります。

また、エラーをチェックしていないため、データベースからヒントを得ることができません

$sql  = "UPDATE empdaytimesheet SET `projectcode`=?',`mon`=? ..."; // and so on
$stmt = mysqli_prepare($link, $sql) or trigger_error(mysqli_error($link));

2 行目に注意してください。PHPエラーが発生し、何が問題なのかがわかります

于 2013-05-13T06:40:34.627 に答える
-1

一般に、ステートメントをバインドするとは、プレースホルダーを残した場所に変数を配置することを意味します? 。ステートメントを準備するときに実際の変数を配置することはありません。

$stmt = "UPDATE empdaytimesheet SET `projectcode`=?,
                                `mon`=?,
                                `tue`=?,
                                `wed`=?,
                                `thu`=?,
                                `fri`=?,
                                `sat`=?,
                                `sun`=? 
    WHERE username = ?";

上記のステートメントを記述すると、実際には、この形式のクエリを実行することを mysql に示しています ...

を使用してクエリをバインドすると、

 mysqli_stmt_bind_param($stmt, 'ssssssss', $sel, $mon, $tue,    $wed,$thu,$fri,$sat,$sun,$username);

代わりに置き換えられる実際の値を指定しています?

エラーが発生する理由は、ステートメントが適切に準備されておらず、mysqli_prepare返されているためですfalse

を使用してエラーをキャッチしてみてくださいmysqli_prepare() or die(mysqli_error())

ここでもっと見る

于 2013-05-13T06:53:01.507 に答える