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

时间:2014-05-12 23:57:08

标签: 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);
}

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

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

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

这让我很困惑。

1 个答案:

答案 0 :(得分:6)

两件事:

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

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

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

  4. 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);
    }