【问题标题】:MySQL error when trying to read from database in PHP/Ajax尝试从 PHP/Ajax 中的数据库读取时出现 MySQL 错误
【发布时间】:2013-10-21 11:19:29
【问题描述】:

在我的应用程序中,尝试从 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);
?> 

【问题讨论】:

  • 再次检查表,确定该列实际上没有命名为 ld (LD) ?
  • 可能id列不存在。
  • 你能显示你的数据表的脚本吗?你有一个名为 id 的列吗?你的 id 值是像“0.25 Meter Orange”这样的字符串吗?
  • 抱歉,MySQL 根本不是我的强项。我正在使用 PHPmyadmin,并且创建了一个名为 cable 的数据库。一个名为 bmouthoff 的表和一个名为 ID 的列。我的专栏没有被称为 ID 我不再收到此错误。我不需要像下拉框中那样将每一列添加为全名吗?我怎样才能得到一些虚拟数据来测试?再次感谢

标签: php jquery mysql sql ajax


【解决方案1】:

你在开玩笑吗? value="RJ 11 to BT" 这个值根本不是整数。也不能使用 intval 函数转换为 int。 不幸的是 我看不到 id 是否有空控件?

$q = isset($_REQUEST["id"]) ? $_REQUEST["id"] : null ;
if($q != null)
{
}

工作得更好。 ID 列的类型是什么?是 int 吗?所以 ' ' 的转义符是没用的。

【讨论】:

  • 抱歉,我认为我的应用程序的工作方式可能存在问题。这个想法是,当从下拉框中选择某条电缆时,它会连接到 MySQL 并获取为该选定电缆类型设置的许多电缆。有意义吗?
【解决方案2】:

您的表似乎没有名为id 的列,因此您的查询失败。

SELECT * FROM `bmouthoff` WHERE `id` = 'youridexample';

错误信息...

“where 子句”中的未知列“id”。

...说明一切。

查看表定义并将id替换为您想要的实际列名,或将表中的列重命名为id

【讨论】:

    【解决方案3】:

    查询中

    SELECT * FROM bmouthoff WHERE id = '".$q."'"
    

    您发送电缆选择的值,它不是整数。

    【讨论】:

      猜你喜欢
      • 2014-01-28
      • 1970-01-01
      • 2018-09-13
      • 1970-01-01
      • 2019-09-03
      • 2016-02-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多