【问题标题】:sql query in php not workingphp中的sql查询不起作用
【发布时间】:2011-11-06 20:39:25
【问题描述】:

我正在尝试在我的 php 文件中进行 sql 查询调用,这是我的代码:

<?php
$program = $_GET["program"];
$school = $_GET["school"]; 
$term = $_GET["term"];
$extension = $_GET["extension"];

$con = mysql_connect("127.0.0.1","root","");
if (!$con)
{
 die('Could not connect: ' . mysql_error());
}

mysql_select_db("csv_db", $con);
$sql = "SELECT * FROM tbl_name WHERE Dep1= '" . $program . "' AND Dep2= '" . $school . "' AND Dep3= '" . $term . "'";  
$result = mysql_query($sql)  or die(mysql_error());
echo $sql;

echo "<table id='booklist'><tr>
                         <th>Edit</th>
                         <th class='coursename'>Course Name</th>
                         <th class='startdate'>Start Date</th>
                         <th class='booktitle'>Book Title</th>
                         <th class='author'>Book Author</th>
                         <th class='isbn'>Book ISBN</th>
                     </tr>";
        while($row = mysql_fetch_array($result))
        { 
            echo    "<tr>
                        <td><input type='checkbox'></input></td>
                        <td class='coursename'>" . $row['Course Name'] . "</td>
                        <td class='startdate'>" . $row['Start Date'] . "</td>
                        <td class='booktitle'>" . $row['Book Title']. "</td>
                        <td class='author'>" . $row['Book Author']. "</td>
                        <td class='isbn'><input class='ISBN_number' type='text' value='' size='13' maxlength='13'></input></td> 
                  </tr>";                   
        }               
echo "</table>";

mysql_close($con);
?> 

这个 sql 应该填充一个 html 表,该表将被发送回 ajax 调用。由于某种原因,它不起作用。当我使用普通的“从 tbl_name 中选择 *”时,表格工作得非常好。当我尝试添加一些参数时,它停止工作。现在显示的只是标题(但不是表格形式)。我对调用进行了回显,参数被正确导入到 php 中,我检查以确保列名与我写的一样。

【问题讨论】:

  • 您的代码打开了一个与 Jupiter 一样大的 SQL 注入安全漏洞。您应该首先了解安全性:owasp.org
  • 您是否尝试过将查询从 PHP 打印到屏幕(在变量插值之后),然后在 MySQL Workbench 中运行以查看它是否在那里工作?您可以在工作台中发布查询和获得的结果吗?
  • 在这一行中看起来像 or die(... 的情况:$result = mysql_query($sql) or die(mysql_error());
  • 当我将它复制到 mysql 工作台时,我刚刚得到了一个可以工作的查询,但要做到这一点,我需要摆脱我的第三个参数。似乎因为我的第三个参数列名中有一个空格,所以它不能正常工作(是的,我现在需要保留这个空间。)我在网上看到某个地方表示你需要的空格,但在名称周围打勾,那也没用……

标签: php sql


【解决方案1】:

那么也许你没有匹配的记录

【讨论】:

  • 我愿意!另外,桌子本身不会建造,这意味着,如果它正在建造,我至少会看到一个边框......
【解决方案2】:

也许您的参数中有 ' 会破坏查询。但是您肯定至少需要对参数进行一些转义。最好使用准备好的语句。使用此代码,每个人都可以发送一些不错的东西,例如:

program=';删除数据库;

Ups,一切都过去了 :-)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-10
    • 2017-09-14
    • 1970-01-01
    • 2013-11-15
    相关资源
    最近更新 更多