从查询中获取数据

时间:2016-10-05 03:00:55

标签: php mysql

我正在尝试学习PHP,为此我试图创建一个URL缩短器。现在,您可以输入一个链接,然后将其输入数据库。它没有随机化字符串,但我会在之后这样做。 (我自己更改了它们以避免遇到问题)。

这是我目前的表格(我的表名为'urls'):

Table

然后当你去(对我来说是localhost)/ somepath时它自动重定向到/process.php?id=somepath

在process.php中,它检查数据库中是否存在指定的路径(somepath),然后获取其原始值。我遇到的问题是获得原始价值。同样,我是PHP新手,我无法理解查询的工作原理。

$query = "SELECT original FROM urls WHERE new = '$new'";
$result = $conn->query($query);

如何从$ result中获取信息?或者我应该在$ result之后从$ query获取它,因为它基本上只运行它?

请解释你为什么使用什么,我不理解这一点。

谢谢,对不起,如果这是一个非常愚蠢的问题。

3 个答案:

答案 0 :(得分:1)

在此代码中,我使用object oriented approach作为prepared statement,或者如果您仍然使用procedural style,您仍然可以使用它。

点击此链接:http://php.net/manual/en/mysqli.prepare.php

所以基本上,在这段代码中发生的事情是正在准备查询然后绑定要使用的参数(这种样式是避免SQL注入的一种方法,因为输入会自动转义)。结果将首先存储在变量$original中,然后我计算查询返回的行数。如果它大于1,则表示存在匹配,如果为0,则表示不匹配。

如果匹配,它将回显变量$original的值。

<?php

  $stmt = $conn -> prepare("SELECT original FROM urls WHERE new = ?");
  $stmt -> bind_param('s',$new);
  $stmt -> execute();
  $stmt -> bind_result($original);
  $stmt -> fetch();
  $stmt -> store_result();

  $res = $stmt -> num_rows();

  $stmt -> close();

  if($res > 0){
    echo $original;
  }
  else{
    //not found
  }

?>

答案 1 :(得分:0)

$query = "SELECT original FROM urls WHERE new = '$new'";
$result = $conn->query($query);    
$rows = mysql_fetch_array($result);
foreach($rows as $row){

     echo "id: " . $row["id"]. " - Name: " . $row["firstname"]. " " . $row["lastname"]. "<br>";
}

您可以使用mysql_fetch_arraymysql_fetch_assoc获取抓取结果

答案 2 :(得分:0)

使用fetch_assoc()从MySQLi面向对象的表中获取数据。

试试这个:

$query = "SELECT original FROM urls WHERE new = '$new'";
$result = $conn->query($query);
if ($result->num_rows > 0) {
// output data of each row
while($row = $result->fetch_assoc()) {
    echo "id: " . $row["id"]. " - Name: " . $row["firstname"]. " " . $row["lastname"]. "<br>";
}
} else {
    echo "0 results";
}

您还可以将结果放在HTML表格中:

 if ($result->num_rows > 0) {
     echo "<table><tr><th>ID</th><th>Name</th></tr>";
     // output data of each row
     while($row = $result->fetch_assoc()) {
         echo "<tr><td>".$row["id"]."</td><td>".$row["firstname"]." ".$row["lastname"]."</td></tr>";
     }
     echo "</table>";
 } else {
     echo "0 results";
 }