查询在 PHPMyAdmin 中工作但在 PHP 中不工作

Posted

技术标签:

【中文标题】查询在 PHPMyAdmin 中工作但在 PHP 中不工作【英文标题】:Query working in PHPMyAdmin but not in 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 文档之前需要转义! 【参考方案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 products。DELETE 从表中删除行。 类似 mysqli_query 的过程至少需要两个参数
    从 mysqli_connect 返回的链接标识符 查询字符串

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

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

这个链接帮你链接mysqli_query

【讨论】:

以上是关于查询在 PHPMyAdmin 中工作但在 PHP 中不工作的主要内容,如果未能解决你的问题,请参考以下文章

UILabel tap 在模拟器中工作但在 iphone 中不工作

Jquery 对象 innerHTML 在 Firefox 中工作但在 IE 中不工作?

NuxtJS:在开发中工作但在生产中工作的路由(netlify)

后台获取在模拟器中工作但在真实设备中不工作

向量查找函数在 Visual Studio 中工作但在 GCC 中不工作

高度的自动布局在 iOS 8 中工作但在 iOS 7 中不工作