【问题标题】:How to save result of a query in variable?如何将查询结果保存在变量中?
【发布时间】:2019-03-27 11:01:04
【问题描述】:

我正在尝试将 MYSQL 查询的结果保存在变量中。我知道结果保存为数组,但我不知道如何将结果分配给变量。 我可以回显结果,但无法将其分配给变量。

这是我的错误代码:

require('db.php');
$id =$_REQUEST['id'];
$name ="SELECT name FROM table2 WHERE id='".$id."'";
$name_result = $con->query($name);
while($row = $name_result->fetch_assoc()) {
        $name=$row['name'];
    }
$ins_query=" insert into table1 (`id`,`name`) values ('$id','$name')";
$stat=mysqli_query($con,$ins_query) or die(" error".mysql_error());

Id 作为 html 输入字段从用户那里获取,并将保存在 table1 中。 名称存在于 table2 中,我想在 table1 中的 id 与 table2 中的 id 相等的地方选择它,然后将其插入 table1。

【问题讨论】:

  • 1.提供错误。 2. 使用准备好的语句。
  • mysql_error() --> mysqli_error($con)
  • 您使用 3 种不同的方式进行查询。因此,不建议从不同来源复制代码:)
  • 注意可能的 SQL 注入。同时使用 $_REQUEST 也很不安全,因为变量可能来自 url(获取数据)、发布数据或 cookie 数据,我强烈建议不要使用 $_REQUEST并使用$_GET 或$_POST 获取变量..
  • “不建议从不同来源复制代码” 事实上@Gabor 这是我今天听到的最好的建议。这就是问题所在现在在互联网上,程序员将旧教程中的代码复制并粘贴到生产代码中,而不考虑代码是否存在漏洞并对其进行修改以使其安全或如何使其工作。

标签: php html mysql


【解决方案1】:
 $name ="SELECT name FROM table2 WHERE id='$id'";

正如你所说,我们可以将变量存储为数组

$array = array();
while($row = mysql_fetch_object($name))
{
    $array[] = $row;
}

因此,之后 $array[] 将具有您想要的值,但如果您想要使用单个变量而不是数组,您可以使用等效来转换它。我希望这个对你有帮助。

【讨论】:

    【解决方案2】:

    试试这个代码:

    require('db.php');
    $id = $_REQUEST['id'];
    //modification
    $query = $this->db->prepare("SELECT name FROM table2 WHERE id=?");
    $query->bind_param('s', $id);
    $query->execute();
    //assuming you are retrieving only 1 value
    $result = $query->get_result->fetch_assoc();
    
    if ($result) {
      //value stored...use as you wish!
      $name = $result["name"];
    
    } //you can add your else

    $this->db 是你的数据库连接

    【讨论】:

    • 我认为很明显,当有人对答案投反对票时,他/她至少可以解释他们的行为。
    猜你喜欢
    • 2021-03-01
    • 1970-01-01
    • 2021-10-25
    • 2020-06-13
    • 1970-01-01
    • 1970-01-01
    • 2021-08-22
    • 2016-04-18
    • 2014-07-22
    相关资源
    最近更新 更多