多个MySQLi在SELECT

时间:2018-01-17 23:40:16

标签: php mysql mysqli

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

$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();

我做错了什么?我想在选择后添加更多UPDATE查询。

1 个答案:

答案 0 :(得分:0)

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

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);
}
?>

无论如何,谢谢!!