php - 从查询中获取数据

标签 php mysql

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

这是我目前的表格(我的表格称为“urls”):

Table

然后,当您转到(对我来说是本地主机)/somepath 时,它会自动重定向到/process.php?id=somepath

在process.php中,它检查数据库中是否存在指定的路径(somepath),然后获取其原始值。我遇到的问题是获取原始值。再说一遍,我是 PHP 新手,我很难理解查询的工作原理。

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

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

请解释一下为什么使用什么,我不明白。

谢谢,抱歉,如果这是一个非常愚蠢的问题。

最佳答案

在这段代码中,我使用了面向对象的方法作为准备好的语句,或者如果您仍然喜欢过程风格,您仍然可以用那个。

检查此链接:http://php.net/manual/en/mysqli.prepare.php

基本上,这段代码中发生的情况是,正在准备查询,然后绑定(bind)要使用的参数(这种样式是避免 SQL 注入(inject)的一种方法,因为输入会自动转义)。结果将首先存储在变量 $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
  }

?>

关于php - 从查询中获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39864756/

相关文章:

php - Zend 框架 1 - 消息 : SQLSTATE[HY093]: Invalid parameter number: no parameters were bound

php - yii2 获取相关记录

MYSQL 调用存储过程时出错

php - 为什么我的 INSERT INTO 方法返回 false?

python - 用于 Python 的 MySQLdb - 不兼容的库版本错误?

php - 对从 php 写入数据库的响应缓慢

php - 如何在选定的日期范围内选择运行事件?

javascript - Laravel:在允许 HTML 标签时,针对 XSS 清理用户输入

java - 用于简单 java 桌面应用程序的数据库服务器

mysql - 根据另一个字段的值在特定字段中替换 MySQL 中的字符串