【问题标题】:error in deleting row in grid in php在php中删除网格中的行时出错
【发布时间】:2013-05-12 17:38:53
【问题描述】:

我以网格格式显示了一些数据,现在我试图通过单击最后一行中的删除按钮来删除该行,但出现错误。有人可以告诉我我犯了什么错误。我的代码:

<form action="deleteQuote.php" method="post">
            <?php
                require_once('config.php');
                $conn = new mysqli(DB_HOST, DB_USER, DB_PASSWORD, DB_DATABASE) 
                or die ('Cannot connect to db');
                $result = $conn->query("SELECT quoteid,name,quote FROM `quotes`, category WHERE category.catid = quotes.catid and quotes.isactive = 1");
                echo "<table>";
                while ($row = $result->fetch_assoc()) {
                echo "<tr><td><input type='hidden' name='delete_id' value=$row[quoteid] /></td> <td>$row[name]</td><td>$row[quote]</td>
                    <td><input type='submit' value='Delete' /></td></tr>";
                }
                echo "</table>";
            ?>
            </form>

deleteQuote.php:

<?php
if(isset($_POST['delete_id']) && !empty($_POST['delete_id'])){
    require_once('config.php');
    $conn = new mysqli(DB_HOST, DB_USER, DB_PASSWORD, DB_DATABASE) 
    or die ('Cannot connect to db');
    $delete_id = mysql_real_escape_string($_POST['delete_id']);
    echo "DELETE FROM quotes WHERE quoteid =".$delete_id;
    $result = $conn->query("DELETE FROM quotes WHERE quoteid =".$delete_id);

}
header('Location: quotes.php');

?>

我收到以下错误:

警告:mysql_real_escape_string() [function.mysql-real-escape-string]: 无法通过 /home/content 中的套接字 '/var/lib/mysql/mysql.sock' (2) 连接到本地 MySQL 服务器/38/11053638/html/admin/deleteQuote.php 第 6 行
警告:mysql_real_escape_string() [function.mysql-real-escape-string]:无法在第 6 行的 /home/content/38/11053638/html/admin/deleteQuote.php 中建立到服务器的链接 删除引号 WHERE quoteid = 警告:无法修改标头信息 - 标头已由 /home/content/38/11053638/html/admin/deleteQuote 中的(输出开始于 /home/content/38/11053638/html/admin/deleteQuote.php:6)发送。第11行的php

【问题讨论】:

  • 你有数据库连接问题显示给我们config.php
  • 您正在混合使用 mysqlmysqli。永远不要这样做
  • @chandresh_cool config.php 似乎很好,因为我使用相同的文件在网格中显示数据
  • mysql-real-escape-string 需要一个打开的 mysql 连接(在当前命名空间 (?) 中)。

标签: php mysql forms


【解决方案1】:

如果您还没有打开 mysql 连接,则不能使用mysql_real_escape_string()。你用的是mysqli而不是mysql,所以你需要使用等效的mysqli方法。

变化:

$delete_id = mysql_real_escape_string($_POST['delete_id']);

到:

$delete_id = $conn->real_escape_string($_POST['delete_id']);

然而,由于 mysqli 支持预处理语句,你应该使用它而不是连接字符串。那你就不用担心转义字符串了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多