我正在尝试学习PHP,为此我试图创建一个URL缩短器。现在,您可以输入一个链接,然后将其输入数据库。它没有随机化字符串,但我会在之后这样做。 (我自己更改了它们以避免遇到问题)。
这是我目前的表格(我的表名为'urls'):
然后当你去(对我来说是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获取它,因为它基本上只运行它?
请解释你为什么使用什么,我不理解这一点。
谢谢,对不起,如果这是一个非常愚蠢的问题。
答案 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_array
或mysql_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";
}