Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/252.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL查询无法从$\u GET使用PHP_Php_Mysql - Fatal编程技术网

MySQL查询无法从$\u GET使用PHP

MySQL查询无法从$\u GET使用PHP,php,mysql,Php,Mysql,我似乎无法将$\u GET传递到我的MYSQL查询中。假设我的数据库中有两个表,example1和example2。我想查询从上一页选择的表。如果我只是将表放入查询中,它就可以正常运行。这是我到目前为止所拥有的 <html> <form id="area" name="area" method="GET" action="test.php"> Select: <select id="area" name="area">

我似乎无法将$\u GET传递到我的MYSQL查询中。假设我的数据库中有两个表,example1和example2。我想查询从上一页选择的表。如果我只是将表放入查询中,它就可以正常运行。这是我到目前为止所拥有的

<html>

<form id="area" name="area" method="GET" action="test.php">
        Select: 
        <select id="area" name="area">
            <option value="example1">Example1</option>
            <option value="example2">Example2</option>  
        </select><br><br>
<input type="submit" value="Submit">
    </form>

</html>

选择:
例1
例2


test.php

include "connect.php";
$area = $_GET['area'];
$sql = "SELECT * FROM '$area' ";
$query = mysqli_query($sql);

if (isset($_POST['searchquery'])) {

$search_term = $_POST['searchquery'];
$result = mysqli_query($con, $sql);

}

?>

<strong>Search</strong>
<p>
<form action="test.php" method="POST">
    Search: <input type="text" name="searchquery" />
    <input type="submit" name="searchname" value="Search">
</form>

<table class="sortable.js" width="100%" cellpadding="1" cellspace="0">
    <tr>
        <td><strong>1</strong></td>
        <td><strong>2</strong></td>
        <td><strong>3</strong></td>
        <td><strong>4</strong></td>
    </tr>

<?php   
while ($row = mysqli_fetch_array($result)) {

?>

    <tr>
        <td><?php echo $row['1']; ?>
        <td><?php echo $row['2']; ?>
        <td><?php echo $row['3']; ?>
        <td><?php echo $row['4']; ?>

<?php } ?>
</table>  
包括“connect.php”;
$area=$_GET['area'];
$sql=“从“$area”中选择*;
$query=mysqli\u查询($sql);
如果(isset($\u POST['searchquery'])){
$search\u term=$\u POST['searchquery'];
$result=mysqli\u查询($con,$sql);
}
?>
搜索

搜索:
1
2
3
4

如果我回显$区域,它将正确显示

您的表名被引用。删除引号或使用转义字符,如勾号

$sql = "SELECT * FROM `$area` ";

与mysql不同,mysqli函数要求显式指定连接。在语句
$query=mysqli\u query($sql)上
您使用了msqli,但没有提供连接(mysqli link resource变量),您应该将连接作为调用的第一个参数传入,如下所示
$query=mysqli\u query($connection,$sql)。另外,不要忘记选择一个数据库。您可以像这样选择一个数据库<代码>mysqli_选择_db($connection,“database_name”)
记住用连接变量名替换
$connection

我发现以下是解决我问题的方法

我改变了:

<form action="test.php" method="POST">


您的表单和
具有相同的
id
名称。更改表单值并重试。您正在使用$\u POST和$\u gett在过程样式中使用的
mysqli\u query()
的第一个参数需要是连接到MySQL时的连接链接。其次,SQL非常容易受到SQL注入的攻击!!!!另外,您的表单和select名称相同,请更改它们。您是否尝试从“$area”运行
select*
查询并替换一个值?为什么你认为它一定能工作?@andrewsi这没什么错-在
script.php?foo=bar
中发布表单是完全可行的,虽然你是正确的,但这只是这个脚本不能工作的众多原因之一。我删除了引号,如果你像
$sql=“SELECT*FROM example1”那样硬编码表,我得到的结果与你说的一样;,它可以正常工作。但是当它是
$area='example1'时$sql=“从$area中选择*”,它失败了?如果我设置$area='example1'$sql=“从$area中选择*”;它起作用了。似乎我无法设置$area='$\u GET['area']'@它确实有效,这就是为什么我感到困惑的原因$面积=$\u获取['area'];回声区$sql=“从$area中选择*”;我看到了带有该代码的变量,但由于某些原因在查询中不起作用
<form action="test.php?area=<?php echo $area?>" method="POST">