php mysql:UPDATE只能用于WHERE data = integer

时间:2013-05-22 19:36:47

标签: php mysql integer

我是php和mysql的新手所以可能是因为我遗漏了一些显而易见的东西但是这里有:

我正在设置一个数据库来存储有库存的物品。为每个项目分配一定数量的库存(例如5)。每个项目都显示在我的网页上,旁边有按钮,可以手动添加或删除数据库中的库存:

  $query = "SELECT * FROM classes";

// This uses a mysql function that act upon our $query variable above
    $result = mysql_query($query);

// This is a loop that says "while there is data to display...keep looping round and displaying that data".
    while($class_data = mysql_fetch_array($result)) {

// Now we are going to echo that data
        echo 
        "<div class=\"classmanagertablecontent\">" . $class_data['name'] . "</div>
        <div class=\"classmanagertablecontent\">" . $date['date'] . "</div>
        <div class=\"classmanagertablecontent\">" . $class_data['stock'] . "</div>
        <div class=\"classmanagertablecontent\">" . $class_data['button_paypal'] . "</div>";

        <form action="../url.php" method="post">
            <input type="hidden" name="button_paypal_fromform" value="<?php echo $class_data['button_paypal'] ?>">
            <input type="submit" value="remove stock" name="remove stock">
        </form>

        <form action="../url.php" method="post">
            <input type="hidden" name="button_paypal_fromform" value="<?php echo $class_data['button_paypal'] ?>">
            <input type="submit" value="add to stock" name="add to stock" >
        </form>
        </div>
    }

“添加到库存”按钮发布到的网址中的代码如下:

    <?php 
        $button_paypal = $_POST['button_paypal_fromform'];

        mysql_query("UPDATE classes SET stock = stock+1 WHERE button_paypal = ". $button_paypal ."");
?>

无论出于何种原因WHERE button_paypal =“一个数字”它的工作原理...... ...但是如果button_paypal =“一个字符串”,它什么都不做。

我无法理解这一点。我将使用的paypal托管按钮由字母和数字组成,因此它需要与两者结合使用。

我试过......

echo "$button_paypal";

...在我的url.php页面上,按钮读得很好(例如SD76S9SFGV)

在我的数据库中“button_paypal”是一个TEXT字段,但我也尝试过VARCHAR。 STOCK是INT。

如果有人可以提供帮助,那么我将非常感激。谢谢。 #hopethismakessense

1 个答案:

答案 0 :(得分:1)

您需要做的就是将字符串值包装在单引号中:

<?php 

    mysql_query(    "UPDATE classes SET stock = stock+1 
                    WHERE button_paypal = '{$_POST['button_paypal_fromform']}' ");

我将数组变量包装在{}括号中,因此您可以直接包含在双引号查询中(不需要像" . $var . "那样连接,也不需要在引用时创建第二个变量直接地)