我在尝试将我的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']}");
为什么会出现这种情况,因为我需要让它在第二行显示完整的查询?
感谢。
答案 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.