业余人士,只是练习一些sql。
我正在尝试将php变量分配给我的sql查询结果,我认为我看到它以这种方式工作,但它似乎对我不起作用:
$query1 = mysql_query("SELECT * FROM markers WHERE id = '$markerid'");
$result = mysql_query($query1);
$markerData = mysql_fetch_array($result, MYSQL_ASSOC);
$name = $markerData['name'];
$description = $markerData['description'];
$directions = $markerData['directions'];
$lat = $markerData['lat'];
$lng = $markerData['lng'];
$type = $markerData['type'];
$addedby = $markerData['addedby'];
我是否公然无视一些规则?
此外,我知道sql已被弃用/不安全,只是试图在这里学习基础知识。
真诚地感谢您的帮助。
答案 0 :(得分:5)
你应该将一个查询语句提供给mysql_query函数,而不是用另一个mysql查询提供它:
$sql = "SELECT * FROM markers WHERE id = '$markerid'";
$result = mysql_query($sql);
强制性注释:
Please, don't use
mysql_*
functions in new code。它们不再被维护and are officially deprecated。请参阅red box?转而了解prepared statements,并使用PDO或MySQLi - this article将帮助您确定哪个。如果您选择PDO here is a good tutorial。
如果你还处于起步阶段并不重要。既然您已经知道API已被弃用且您的查询是美国式的,那么为什么不要只是养成良好的习惯。
这是通过PDO准备好的陈述:
$db = new PDO('mysql:host=localhost;dbname=DB_NAME', 'username', 'password');
$sql = 'SELECT * FROM markers WHERE id = :markerid';
$select = $db->prepare($sql);
$select->bindParam(':markerid', $markerid, PDO::PARAM_INT);
$select->execute();
$markerData = $select->fetch(PDO::FETCH_ASSOC);
$name = $markerData['name'];
$description = $markerData['description'];
$directions = $markerData['directions'];
$lat = $markerData['lat'];
$lng = $markerData['lng'];
$type = $markerData['type'];
$addedby = $markerData['addedby'];
答案 1 :(得分:0)
您可以像这样查看结果:
while ($row = mysql_fetch_assoc($result)) {
echo $row["name"];
echo $row["description"];
echo $row["directions"];
echo $row["lat"];
echo $row["lng"];
echo $row["type"];
echo $row["addedby"];
}
你的查询应该采用这样的SQL语句:
$sql = "SELECT * FROM markers WHERE id = '$markerid'";
$result = mysql_query($sql);
答案 2 :(得分:0)
您可以使用这样的查询。
SELECT * FROM“ markers”“ t” WHERE“ id” =''。$ markerid。'';