PHP-在MySQL函数中使用HTML表单函数中的变量在另一个函数中查询[重复]

问题描述 投票:0回答:1

我正在尝试在另一个函数的MySQL查询中使用由一个函数的表单创建的变量。简而言之,我只想在餐厅页面菜单页面上显示特定餐厅的菜单项。

showMenu()函数,需要显示连接到餐厅的菜单项。

如果我用下面的$ name代替餐厅的实际价值,则此查询有效。它不适用于$ name值。

function showMenu() {
   global $connection;
   $query = "SELECT MenuID, ItemName, Description, Price, ItemType FROM menu, restaurants where menu.RestaurantID = restaurants.RestaurantID and restaurants.Name='".$name."'";
   $result = mysqli_query($connection, $query);

       if ($result->num_rows > 0) {
           echo "<table class='sortable'><tr><th>Name</th><th>Description</th><th>Price</th><th>ItemType</th></tr>";
           // output data of each row
           while($row = $result->fetch_assoc()) {
               $o = '<tr><td data-label="Name">' . " " . $row["ItemName"]. '</td><td data-label="Description">' . " " . $row["Description"]. '</td><td data-label="Price">' . " " . $row["Price"]. '</td><td data-label="Type">' . " " . $row["ItemType"]. '</td></tr>';
               echo $o;
           }
           echo "</table>";
       }   else {
           echo "0 results";
           }
}

添加餐厅代码

function addRestaurant() {
    if(isset($_POST['submit'])) {
        global $connection;
        $name = $_POST['name'];
        $address = $_POST['address'];
        $city = $_POST['city'];
        $state = $_POST['state'];       
        $zipcode = $_POST['zipcode'];
        $googlemapslink = $_POST['googlemapslink'];
        $restauranttype = $_POST['restauranttype'];
        $website = $_POST['website'];
        $logo = $_POST['logo'];
        $sitelink = $_POST['sitelink'];

        if ($googlemapslink == "") {
            $googlemapslink = "https://youtu.be/dQw4w9WgXcQ";
        }

        if ($website == "") {
            $website = "https://youtu.be/dQw4w9WgXcQ";
        }

        if ($logo == "") {
            $logo = "https://youtu.be/dQw4w9WgXcQ";
        }

        $name = mysqli_real_escape_string($connection, $name);
        $address = mysqli_real_escape_string($connection, $address);
        $city = mysqli_real_escape_string($connection, $city);
        $state = mysqli_real_escape_string($connection, $state);
        $zipcode = mysqli_real_escape_string($connection, $zipcode);
        $googlemapslink = mysqli_real_escape_string($connection, $googlemapslink);
        $restauranttype = mysqli_real_escape_string($connection, $restauranttype);
        $website = mysqli_real_escape_string($connection, $website);
        $logo = mysqli_real_escape_string($connection, $logo);
        $sitelink = mysqli_real_escape_string($connection, $sitelink);

        $query = "INSERT INTO `restaurants` (Name, Address, City, State, ZipCode, GoogleMapsLink, Website, RestaurantType, RestaurantLogo, SiteLink) ";
        $query .= "VALUES (";
        $query .= "'$name', ";
        $query .= "'$address', ";
        $query .= "'$city', ";
        $query .= "'$state', ";
        $query .= "'$zipcode', ";
        $query .= "'$googlemapslink', ";    
        $query .= "'$website', ";
        $query .= "'$restauranttype', ";
        $query .= "'$logo', ";
        $query .= "'$sitelink'); ";

        $filesite = "restaurants/" . $sitelink;
        $file = "restaurants/menu.php";
        $contents = file_get_contents($file);

        file_put_contents($filesite, $contents);

        $result = mysqli_query($connection, $query);
            if(!$result) {
                die("Query failed." . mysqli_error($connection));
            } else {
                echo "Record updated!";
            }
    }
}

我已经查看了Stackoverflow上的几乎所有内容,并且无法将对其他人有用的东西转换为对我而言有用的东西。在addRestaurant()下使$ name全局无效,在showMenu()下使$ name全局无效。

有什么想法吗?

php mysql function global-variables
1个回答
1
投票

尝试将变量名称发送到函数。

showMenu($name) { 
   // code to do things
} 

您在查询中使用$name,但没有将其传递给函数。

© www.soinside.com 2019 - 2024. All rights reserved.