select中的多个mysqli准备的update语句

baubqpgj  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(280)

我有两个或更多的声明在我的网站上的一页。它不能正常工作。第一个代码是这样的:

$query = "SELECT gpname FROM guineapigs WHERE fbid=?";
if ($statement = $mysqli->prepare($query)) {

$statement->bind_param('s', $_SESSION[FBID]);

$statement->execute();

$statement->bind_result($gpname);

while($statement->fetch()) {
  echo $gpname;
}
}

$statement->close();

问题是,当我尝试向其中添加第二个代码时:

if($_GET[buy]=='ch'){
$statement = $mysqli->prepare("UPDATE users SET `money` = `money`+ 22000 WHERE gpname=?");
$statement->bind_param('s', $gpname);
$results = $statement->execute();
header( "Location: /test.php?bsuccess=ch" );
}

if($_GET[bsuccess]=='ch'){
echo "Successfully added 22000 money..";
}

我的代码如下所示,但不起作用:

$query = "SELECT gpname FROM guineapigs WHERE fbid=?";
if ($statement = $mysqli->prepare($query)) {

$statement->bind_param('s', $_SESSION[FBID]);

$statement->execute();

$statement->bind_result($gpname);

while($statement->fetch()) {
      if($_GET[buy]=='ch'){
$statement2 = $mysqli->prepare("UPDATE users SET `money` = `money`+ 22000 WHERE gpname=?");
$statement2->bind_param('s', $gpname);
$statement2->execute();
header( "Location: /test.php?bsuccess=ch" );
}

if($_GET[bsuccess]=='ch'){
echo "Successfully added 22000 money..";
}
}
}

$statement->close();

我做错什么了?我想添加更多的更新后,选择查询。

f8rj6qna

f8rj6qna1#

哦,我是个白痴!那是个错误:而不是

while ($stmt1->fetch()){ 
};

仅需要:

while ($stmt1->fetch());

下面是一个有一些发展的工作示例:

<?php 
ob_start();
session_start();

include_once 'dbtest.php';

mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
try {
  $mysqli->autocommit(FALSE); //turn on transactions

  $stmt1 = $mysqli->prepare("SELECT fbname,fbemail FROM users WHERE fbid = ?");
  $stmt1->bind_param("s", $_SESSION['FBID']);
  $stmt1->execute();
  $stmt1->bind_result($fbname,$fbemail);
  while ($stmt1->fetch());

  $stmt2 = $mysqli->prepare("INSERT INTO test (name,email) VALUES (?, ?)");
  $stmt2->bind_param("ss", $fbname, $fbemail);
  $stmt2->execute();
  $stmt2->close();

  $stmt1->close();

  $mysqli->autocommit(TRUE); //turn off transactions + commit queued queries
} catch(Exception $e) {
  $mysqli->rollback(); //remove all queries from queue if error (undo)
  error_log($e);
}
?>

无论如何谢谢你!!

相关问题