我无法更新数据库中的记录

时间:2012-02-15 14:12:04

标签: php mysql database

我有一个系统,我希望记录日期,在0和1之间更改其状态。打开或关闭功能。这是打开或关闭它的表格:

<form id="form1" name="form1" method="post" action="">
            <label>
                Select Market: 
                    <select name="market" id="market">
                        <option value="EUR/USD">EUR/USD</option>
                        <option value="gbpusd">GBP/USD</option>
                        <option value="chfusd">CHF/USD</option>
                        <option value="brent">Brent</option>
                        <option value="GOLD">Gold</option>
                        <option value="downjones">Down Jones</option>      
                    </select>
            </label>
            <label>
                <input type="submit" name="on" id="on" value="On">
                <input type="submit" name="off" id="off" value="Off">
            </label>
        </form>

现在这是用于更新记录的php:

if(isset($_POST['on']))
{
    if(isset($_POST['market']))
    {
        if($_POST['market'] == 'EUR/USD')
            $market_id = '1';

        $updateRecord = mysql_query("UPDATE current_trades SET status='1' WHERE id='$market_id'");

        //Update record by turning it on
        echo "market on";
    }
}

正如您所看到的,用户可以从下拉菜单中选择一个值,然后点击或打开以打开或关闭该功能。但是当我点击(这是迄今为止唯一一个有逻辑的)时它没有更新我的记录,任何看错都没有?

我认为它与权限无关,因为我有其他页面在我的数据库中编辑其他表。

如果我进入phpMyAdmin并从那里运行Mysql也可以。

我还测试过从我的数据库中抓取一些记录,这很好用。

所有想法?

1 个答案:

答案 0 :(得分:1)

问题是$market_id未定义($_POST['market'] == 'EUR/USD'除外),因此更新后的查询将失败(它将查找记录WHERE id='',可能没有)。

也许您还希望mysql_query中的echoif行?在这种情况下,整个块周围需要{}

if($_POST['market'] == 'EUR/USD') {
    $market_id = '1';
    $updateRecord = mysql_query("UPDATE current_trades SET status='1' WHERE id='$market_id'");
    //Update record by turning it on
    echo "market on";
}

修改

我重新阅读了你的问题,现在我觉得我建议的代码不是你需要的。您需要的是为$market_id中的每个可能选定值设置正确的#market集。最简单的解决方案是将每个value的{​​{1}}属性设为市场ID,例如

<option>

然后你PHP你只做<option value="1">EUR/USD</option>

如果你不想这样,你需要在你的PHP或一堆$market_id = is_numeric($_POST['market']) ? $_POST['market'] : 0;上使用switch语句。这里重要的是你需要为每种情况设置一个不同的if/else集,这样你就可以根据它运行正确的查询。