在我的应用程序中,我在尝试从MySQL获取数据时收到以下错误。我不确定它是否是MySQL的错误配置,如果有人可以检查我的代码并告诉我MySQL应该如何看待它将非常感激。
我收到的错误是无法查询:'where子句'中的未知列'id'。这只会在我从下拉框中选择一个项目时显示。
这是主页面的代码,上面有下拉框
<!DOCTYPE html>
<html>
<head>
<title>Cable Management</title>
<link href="style.css" rel="stylesheet">
</head>
<body>
<div class="wrapper">
<?php include("Header.php"); ?>
<div id="main">
<h1>Cable Management</h1>
<h2>Bournemouth Office</h2>
<p>Enter how many cables you want to remove or add from the Bournemouth office</p>
<script>
function showcables(str)
{
if (str == "")
{
document.getElementById("txtHint").innerHTML="";
return;
}
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else // code for IE6, IE5
{
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","getcable.php?q="+str,true);
xmlhttp.send();
}
</script>
</head>
<body>
<form>
<INPUT TYPE = "TEXT" NAME='amount' VALUE ="">
<select name="cables" onchange="showcables(this.value)">
<option value="">Select a cable type</option>
<option value="0.25 Metre Orange">0.25 Metre Orange</option>
<option value="0.3 Metre Orange">0.3 Metre Orange</option>
<option value="0.5 Metre Orange">0.5 Metre Orange</option>
<option value="1 Metre Orange">1 Metre Orange</option>
<option value="2 Metre Orange">2 Metre Orange</option>
<option value="3 Metre Orange">3 Metre Orange</option>
<option value="5 Metre Orange">5 Metre Orange</option>
<option value="10 Metre Orange">10 Metre Orange</option>
<option value="2 Metre Black">2 Metre Black</option>
<option value="3 Metre Black">3 Metre Black</option>
<option value="5 Metre Black">5 Metre Black</option>
<option value="10 Metre Black">10 Metre Black</option>
<option value="RJ 11">RJ11</option>
<option value="RJ 11 to BT">RJ11 to BT</option>
</select>
<INPUT TYPE = "button" Name = "Remove" VALUE = "Remove">
<INPUT TYPE = "button" Name = "Add" VALUE = "Add">
</form>
<br>
<div id="txtHint"><b>The amount of cables left will be listed here</b></div>
</select>
</div>
<div class="footer-clear"></div><!-- add this at the end of wrapper -->
</div> <!-- i added this closing tag, it was missing (for wrapper) -->
<?php include("Footer.php"); ?> <!-- move footer to go outside of wrapper -->
</body>
</html>
这是getcable.php页面,其中实际上有MySQL命令
<?php
$q = intval($_GET['q']);
$con = mysqli_connect('localhost','root','','cables');
if (!$con)
{
die("Could not connect: " . mysqli_connect_error());
}
$sql="SELECT * FROM bmouthoff WHERE id = '".$q."'";
$result = mysqli_query($con,$sql) or die ("Could not query: " . mysqli_error($con));
echo "<table>";
while($row = mysqli_fetch_array($result))
{
echo "<tr>";
echo "<td>" . $row['Amount'] . "</td>";
echo "</tr>";
}
echo "</table>";
mysqli_close($con);
?>
答案 0 :(得分:1)
您的表似乎没有名为id
的列,因此您的查询失败。
SELECT * FROM `bmouthoff` WHERE `id` = 'youridexample';
错误讯息......
'where子句'中的未知列'id'。
......说了一切。
查看表格定义并将id
替换为您想要的实际列名称,或将表格中的列重命名为id
。
答案 1 :(得分:1)
$q = isset($_REQUEST["id"]) ? $_REQUEST["id"] : null ;
if($q != null)
{
}
工作得更好。 ID列的类型是什么?是int吗?所以''的逃脱者是没用的。
答案 2 :(得分:0)
在查询中
SELECT * FROM bmouthoff WHERE id = '".$q."'"
你发送的电缆值选择,它不是整数。