-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

尝试(使用占位符(?)而不是直接变量)

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

$stmt = mysqli_prepare($link, $stmt);
// s : corresponding variable has type string
mysqli_stmt_bind_param($stmt, 'sssssssss', $sel, $mon, $tue, $wed,$thu,$fri,$sat,$sun,$username);

$sel = 'whatevr';
$mon = 'whatever';
//...
//...so on ...

$stmt->execute();

参考

于 2013-05-13T06:39:00.547 回答
0

您使用准备好的语句的方式是错误的。

您必须使用占位符而不是变量:

此外,您没有检查错误,因此您无法从数据库中获得提示

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

注意第二行。它会引发一个 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 回答