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