【问题标题】:Query working in PHPMyAdmin but not in PHP查询在 PHPMyAdmin 中工作但在 PHP 中不工作
【发布时间】:2015-05-17 12:56:18
【问题描述】:

我是 PHP 新手,已经学习了一个在线教程,到目前为止我一直工作正常,但现在我的数据库没有返回查询,但是当我去 PHPmyadmin 那里时,我可以让查询正常工作。

下面是代码

    <?php 
ob_start();
//Delete Item question to admin and delete product

include"../storescripts/connect_to_mysql.php";

if (isset($_GET['deleteid'])) {
    echo 'Do you really want to delete the item with ID '.$_GET['deleteid'].'?<a href="inventory_list.php?yesdelete='.$_GET['deleteid'].'">Yes</a>|<a href="inventory_list.php">No</a>';
    exit();
    } 

if(isset($_GET['yesdelete'])){
    // Delete the actual product and delete picture also
    //delete from database
    //$id_to_delete = $_GET['yesdelete'];
    //echo  $id_to_delete;

     $sql =mysqli_query( "DELETE * FROM `products` WHERE `id`=2  LIMIT1 ");

    //mysql_query("DELETE * FROM `products` WHERE `id`='$id_to_delete'LIMIT1") or (mysql_error());

    //mysqli_query("DELETE * FROM products WHERE id=`$id_to_delete`LIMIT1");// or (mysql_error());

    //Unlink file from server
    $pictodelete=("../inventory_images/$id_to_delete");
    //echo $pictodelete;
    if(file_exists($pictodelete)){
        unlink($pictodelete);
        }

        header("location:inventory_list.php");
        exit();

    }   


?>

非常感谢您的帮助,我的服务器读取 PHP Extension :mysqli 。

【问题讨论】:

  • LIMIT1 应该是LIMIT 1,带有一个空格...
  • 危险:你容易受到SQL injection attacks的影响,你需要自己去defend危险:此代码是vulnerable to XSS。用户输入在插入 HTML 文档之前需要转义!

标签: php mysql mysqli phpmyadmin


【解决方案1】:

我不知道 connect_to_mysql.php 里面是什么,但起初有一个 连接到数据库的过程 我假设你做得正确,它包含的代码在默认设置下看起来像这样

<?php
$servername = "localhost";
$username = "root";
$password = "";
$databasename="abc";

// Create connection
$conn = mysqli_connect($servername, $username, $password,$databasename);

// Check connection
if (!$conn) {
    die("Connection failed: " . mysqli_connect_error());
}
echo "Connected successfully";
?>

我在您的代码中看到的第二件事

$sql =mysqli_query( "DELETE * FROM `products` WHERE `id`=2  LIMIT1 ");

它包含语法错误,应该是

$sql =mysqli_query( $conn,"DELETE FROM `products` WHERE `id`=2  LIMIT 1 ");

【讨论】:

    【解决方案2】:

    Limit 后面有一个空格。

    你没有在 mysqli_query() 函数中指定连接。

    例如:

    <?php
    $con=mysqli_connect("localhost","my_user","my_password","my_db");
    // Check connection
    if (mysqli_connect_errno())
      {
      echo "Failed to connect to MySQL: " . mysqli_connect_error();
      }
    
    // Perform queries 
    mysqli_query($con,"SELECT * FROM Persons");
    mysqli_query($con,"INSERT INTO Persons (FirstName,LastName,Age) 
    VALUES ('Glenn','Quagmire',33)");
    
    mysqli_close($con);
    ?>
    

    你的情况

    $sql =mysqli_query( $connectionname,"DELETE * FROM `products` WHERE `id`=2  LIMIT 1 ");
    

    【讨论】:

      【解决方案3】:

      查询错误:$sql =mysqli_query("DELETE * FROM products WHERE id=2 LIMIT1");

      • DELETE * FROM products 替换为 DELETE FROM productsDELETE 从表中删除行。
      • 类似 mysqli_query 的过程至少需要两个参数
        1. 从 mysqli_connect 返回的链接标识符
        2. 查询字符串

      并且您没有将链接指定为第一个参数,您应该使用返回的链接到 mysqi_query。

      $con = mysqli_connect('localhost','root','password','db');
      $sql =mysqli_query( $con,"DELETE FROM `products` WHERE `id`=2  LIMIT1 "); 
      

      这个链接帮你链接mysqli_query

      【讨论】:

        猜你喜欢
        • 2018-06-19
        • 1970-01-01
        • 2023-04-05
        • 2018-07-19
        • 2013-03-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-02-09
        相关资源
        最近更新 更多