查询在 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】:将 DELETE * FROM products 替换为 DELETE FROM products。DELETE 从表中删除行。 类似 mysqli_query 的过程至少需要两个参数查询错误:$sql =mysqli_query("DELETE * FROM
products
WHEREid
=2 LIMIT1");
-
从 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)