首页 > 解决方案 > PHP:if语句测试DB值是否等于数字-如果为真则执行多个sql查询

问题描述

您好,我正在尝试制作执行多个 sql 查询的 php 代码,只要某个数据库值等于 1。如果该值不等于 1,则将页面重定向到 oops.php。


到目前为止,这是我的代码:

<?php
session_start();

$servername = "localhost";
$username = "myUser";
$password = "myPass";
$dbname = "cashball_accounts";
$cash_amount = $_SESSION['cash_amount'];

// Create connection

$userid = $_SESSION['id'];

$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection

if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

// Fetch the existing value of the cash_amount against that particular user here. You can use the SELECT cash_amount from users where userid = $userid

$_SESSION['cash_amount'] += $_POST['cashmade'];

$sql = "UPDATE users SET cashincheck = 0 WHERE id = ?";
$stmt = $conn->prepare($sql);
$stmt->bind_param('s', $userid);
$result = $stmt->execute();


if($result)
{
   echo "cashin complete!";
}
else
{
   echo mysqli_error($conn);
   session_start();
   session_unset();
   session_destroy();
}

$conn->close();
?>

因此,如果数据库中的变量“cashincheck”等于 1,我希望从 //Fetch 注释到 if($result) 的所有内容都可以执行。

例如:

if(SELECT cashincheck FROM users WHERE id = ? = 1) {

$_SESSION['cash_amount'] += $_POST['cashmade'];

$sql = "UPDATE users SET cashincheck = 0 WHERE id = ?";
$stmt = $conn->prepare($sql);
$stmt->bind_param('s', $userid);
$result = $stmt->execute();


    } else {
//redirect to oops.php
}

**/\ 我知道这根本行不通,这只是一个例子/**

我还想制作其他几个 if 语句并相应地更新数据库,这意味着需要更多的 sql 查询和 if 语句,那么我该如何添加更多呢?

单独 if 语句的另一个示例:

 if($_POST['cashmade'] < $_POST['type']) {

    $sql = "UPDATE users SET moneymade = moneymade + $_POST['cashmade'] WHERE id = ?";
    $stmt = $conn->prepare($sql);
    $stmt->bind_param('s', $userid);
    $result = $stmt->execute();

} else {

    $sql = "UPDATE users SET moneylost = moneylost + $_POST['type'] - $_POST['cashmade'] WHERE id = ?";
    $stmt = $conn->prepare($sql);
    $stmt->bind_param('s', $userid);
    $result = $stmt->execute();
}

标签: phpmysqldatabasemysqliphpmyadmin

解决方案


推荐阅读