将变量分配给sql查询结果

时间:2014-11-14 07:10:36

标签: php mysql sql

业余人士,只是练习一些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已被弃用/不安全,只是试图在这里学习基础知识。

真诚地感谢您的帮助。

3 个答案:

答案 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,并使用PDOMySQLi - 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。'';