在PHP中运行mySQL查询

时间:2014-02-26 21:17:16

标签: php mysql

我在尝试将我的mySQL查询作为php中的查询运行时遇到问题:

这是原始的mysql查询:

SELECT *FROM clothing, sizing WHERE clothing.id = "101" AND sizing.type_id = clothing.type_id AND sizing.brand_id = clothing.brand_id;

我尝试按以下方式编辑它:

$results = $connection->query("SELECT * FROM clothing,sizing WHERE clothing.id = {$_GET['id']}") AND sizing.type_id = clothing.type_id AND sizing.brand_id = clothing.brand_id;

代码只有在我执行以下操作时才会起作用:

$results = $connection->query("SELECT * FROM clothing,sizing WHERE clothing.id = {$_GET['id']}");

为什么会出现这种情况,因为我需要让它在第二行显示完整的查询?

感谢。

4 个答案:

答案 0 :(得分:0)

是的原因是

$results = $connection->query("SELECT * 
FROM clothing,sizing 
WHERE clothing.id = {$_GET['id']}")
AND sizing.type_id = clothing.type_id AND sizing.brand_id = clothing.brand_id;
clothing.id = {$_GET['id']}"之后

表示你正在使用)并关闭查询,因此它应该是

$results = $connection->query("SELECT * 
FROM clothing,sizing 
WHERE clothing.id = {$_GET['id']} 
AND sizing.type_id = clothing.type_id
AND sizing.brand_id = clothing.brand_id");

答案 1 :(得分:0)

看起来您正在调用query()函数之外添加查询代码。查询本身被双引号括起来表示它是一个要传递给函数的字符串,在那里添加你的附加SQL片段。

答案 2 :(得分:0)

您遇到了封装问题。当你在查询本身使用双引号时,PHP解释器认为你想要关闭你在这里开始的字符串:

query("SELECT

作为一种快速而肮脏的解决方法,您可以将双引号移动到字符串的末尾(而不是clothing.id = {$_GET['id']}之后),以确保字符串不会过早关闭。

$results = $connection->query(
    "SELECT * FROM clothing,sizing 
    WHERE clothing.id = {$_GET['id']})
    AND sizing.type_id = clothing.type_id 
    AND sizing.brand_id = clothing.brand_id;");

但是,请注意,由于您在查询中使用不受信任的用户输入,因此存在SQL注入攻击的风险。请务必阅读有关SQL注入漏洞的信息,并考虑使用PDO获得更安全的结果。

答案 3 :(得分:0)

这是在php中使用MySQL Query的正确方法

 $con=mysqli_connect("localhost","user_name","password","db_name"); \\ this is for creating connection.

 $result = mysqli_query($con,"SELECT * FROM db_name.table_name"); \\ this is main query in php.