【问题标题】:Getting Fatal Error出现致命错误
【发布时间】:2011-04-18 13:12:08
【问题描述】:

我收到此错误:

致命错误:不支持的操作数类型 在 C:\xampp\htdocs\process.php 上线 59("$总计 = 计算尺寸成本() + 计算顶部成本()+ 计算交付成本();")

<?php
    $name = $_GET['name'];
    $phone = $_GET['phone'];
    $address = $_GET['address'];
    $size = $_GET['size'];
    $topping = $_GET['topping'];
    $delivery = $_GET['deliverytype'];
    $comment=$_GET['comments'];

    mysql_connect ("localhost", "root", "") or die ('Error: ' . mysql_error());
    mysql_select_db ("pizza");
    $query ="INSERT INTO orders (name, phone, address, size, topping, delivery, comments)  VALUES ('".$name."', '".$phone."', '".$address."','".$size."','".$topping."','".$delivery."','".$comment."')";



    $total = 0;
    $total = calculate_size_cost() + calculate_topping_cost() + calculate_delivery_cost();

    echo "Dear $name  your {$_GET["size"]} pizza has been ordered.";
    echo "Your Total is $ $total";
    echo "\n\n\nYour Toppings: {$_GET["topping"]}";
    echo "\nYour Comments: {$_GET["comments"]}";
    echo "Your Delivery Type:{$_GET["deliverytype"]}";

    function calculate_size_cost() {
        $size = 0;
        if ($_GET['size'] == "Small"){
            $size+=5;

        }
        else if ($_GET['size'] == "Medium"){
            $size+=10;

        }
        else if ($_GET['size'] == "Large"){
             $size+=15;
        }
         return $size;


    }

    function calculate_topping_cost() {
        $topping = 1;
        return $_GET['topping'];
    }

    function calculate_delivery_cost() {
        $delivery_cost = 0;
        if ($_GET['deliverytype'] == "delivery") {
            $delivery_cost += 5;
        }
        return $delivery_cost;
    }
    ?>

【问题讨论】:

  • $_GET['topping'] 包含什么内容?
  • 我假设 $_GET['topping'];不是数字:)。
  • 它包含$topping的值。

标签: php phpmyadmin


【解决方案1】:

尝试类型转换(你可以使用 (float) 或任何你需要的东西,我正在使用 (int)

$size =(int) $_GET['size'];
$topping =(int)$_GET['topping'];
$delivery = (int)$_GET['deliverytype'];

对每个函数的返回值也一样

return (int)$size; 等等……

@Ankur one 建议:更改插入语法(我更喜欢这个)

$query =" INSERT INTO orders  SET
                name='".$name."',
                phone='".$phone."', 
                address='".$address."', 
                size='".$size."', 
                topping='".$topping."', 
                delivery='".$delivery."', 
                comments='".$comment."' )";

然后写

 $done=mysql_query($query);
 echo $done;

【讨论】:

  • 感谢您的帮助。但它仍然没有将数据插入数据库。数据库显示 MySQL 返回了一个空结果集。
  • 意味着致命错误消失了。现在只有mysql的问题。我对吗?
  • 是的,mysql的问题。它没有将值插入表中。
  • @diEcho 为什么它没有插入数据库?
  • 你没有写mysql_query($query),没有这个怎么插入?查看更新的答案
【解决方案2】:

您返回的是 GET 数组而不是结果。

function calculate_topping_cost() {
    $topping = 1;
    return $_GET['topping'];
}

试试这个:

function calculate_topping_cost() {
    $topping = 1;
    return $topping;
}

【讨论】:

    【解决方案3】:

    $_GET["topping"] 可能包含不是数字的内容。 你可以强制施放它:

    function calculate_topping_cost() {
            $topping = 1;
            return (int) $_GET['topping'];
        }
    

    如果topping 不是数字,这将返回0

    但是您可能想明确地捕获该条件,或者修复代码 - 该函数没有多大意义,这可能只是一个错误。

    【讨论】:

    • 修复了代码,但有一点,它没有显示浇头,而是只显示“数组”这个词。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-02
    • 2018-02-16
    • 1970-01-01
    • 2014-12-14
    • 1970-01-01
    相关资源
    最近更新 更多