代码一直有效,直到我成为一个函数

Ale*_*lec -1 php mysql function

我正在处理包含我所有功能的PHP文件.我目前通过GET发送信息,然后该文件确定我正在尝试执行的操作.这是我目前的文件.

if ($action == 'creditBal')
{
    $user_id = $_GET['user_id'];
    $amt = $_GET['amt'];

    $mysql_query = "UPDATE Accounts SET BALANCE=BALANCE+$amt WHERE ID=$user_id";
    $result = mysql_query($mysql_query, $mysql_conn);

    if (!$result)
    {
        # die('MySQL Error: ' . mysql_error());

        $json_array = array(
            'response' => 'mysql_error'
        );

        return;
    }

    $json_array = array(
        'response' => 'success',
    );

    echo json_encode($json_array);

    mysql_close($mysql_conn);
}
Run Code Online (Sandbox Code Playgroud)

上面的代码很有效,直到我决定将其更改为以下代码.

function creditBal($user_id, $amt)
{
    $mysql_query = "UPDATE Accounts SET BALANCE=BALANCE+$amt WHERE ID=$user_id";
    $result = mysql_query($mysql_query, $mysql_conn);

    if (!$result)
    {
        # die('MySQL Error: ' . mysql_error());

        $json_array = array(
            'response' => 'mysql_error'
        );

        return;
    }

    $json_array = array(
        'response' => 'success',
    );

    return json_encode($json_array);

    mysql_close($mysql_conn);
}

if ($action == 'creditBal')
{
    $user_id = $_GET['user_id'];
    $amt = $_GET['amt'];

    echo creditBal($user_id, $amt);
}
Run Code Online (Sandbox Code Playgroud)

我已经尝试检查拼写错误和一切,但它总是不起作用.一旦我做了if $ action只相等,那就行了.由于某种原因,该功能不起作用.

这让我很困惑.

Joh*_*nde 6

两件事情:

  1. 您没有$mysql_conn可用的功能.您可以将其作为参数传递,或使用global关键字使其在您的函数中可用.

  2. 当出现MySQL错误时,您实际上并未返回响应.什么也没有回报.

  3. 正如我在评论中提到的,这段代码是不安全和易受攻击的.请解决这个问题.

.

function creditBal($user_id, $amt, $mysql_conn)
{
    $mysql_query = "UPDATE Accounts SET BALANCE=BALANCE+$amt WHERE ID=$user_id";
    $result = mysql_query($mysql_query, $mysql_conn);

    if (!$result)
    {
        # die('MySQL Error: ' . mysql_error());

        $json_array = array(
            'response' => 'mysql_error'
        );
    }
    else {
        $json_array = array(
            'response' => 'success',
        );
    }
    mysql_close($mysql_conn);
    return json_encode($json_array);

}

if ($action == 'creditBal')
{
    $user_id = $_GET['user_id'];
    $amt = $_GET['amt'];

    echo creditBal($user_id, $amt, $mysql_conn);
}
Run Code Online (Sandbox Code Playgroud)