php - 当按下链接时运行 MySQL 查询

标签 php mysql

我有这段 PHP 代码,可以根据我的查询创建一个表。在此表中,我想根据输出(路径)创建链接。单击这些时,它们将触发另一个查询运行。请参阅我的代码和下面的进一步说明。

代码如下所示:

<?php
/* Attempt MySQL server connection. Assuming you are running MySQL
server with default setting (user 'root' with no password) */
$link = mysqli_connect("localhost", "root", "", "DB1");

// Check connection
if($link === false){
    die("ERROR: Could not connect. " . mysqli_connect_error());
}

// Attempt select query execution
$sql = "SELECT * FROM testDB";
if($result = mysqli_query($link, $sql)){
    if(mysqli_num_rows($result) > 0){
        echo "<table>";
            echo "<tr>";
                echo "<th>file</th>";
                echo "<th>path</th>";
                echo "<th>type</th>";
            echo "</tr>";
        while($row = mysqli_fetch_array($result)){
            echo "<tr>";
                echo "<td>" . $row['file'] . "</td>";
                echo "<td>" . $row['path'] . "</td>";
                echo "<td>" . $row['type'] . "</td>";
            echo "</tr>";
        }
        echo "</table>";
        // Free result set
        mysqli_free_result($result);
    } else{
        echo "No records matching your query were found.";
    }
} else{
    echo "ERROR: Could not able to execute $sql. " . mysqli_error($link);
}

// Close connection
mysqli_close($link);
?>

因此,当运行此命令时,我得到一个表,其输出包含文件、路径、类型。我现在想做的是将路径作为表中的链接,单击时,应执行此查询并给出一个新表:SELECT * FROM testDB WHERE path = 'PATH FROM THE LINK'。

我尝试通过使用准备好的语句来实现这一点,将我的代码更改为:

if (isset($_GET["path"])) {
    $sql1 = "SELECT `file`, `path`, `type` FROM testDB WHERE path=?";
    $stmt = $link->prepare($sql1);
    $stmt->bind_param("s", $_GET["path"]);
    $result = $stmt->execute();
} else {
    $sql = "SELECT * FROM testDB";
    $result = $link->query($sql);
}
if ($result) {
    if ($result->num_rows) {

然后在表中添加:

echo "<td><a href='http://myurl.com/test.php?path=" . $row['path'] . "'>" . $row['path'] . "<a/></td>";

但是点击链接,它应该执行SELECT file, path, type FROM testDB WHERE path=? 总是给出“没有找到与您的查询匹配的记录”。可能是什么问题呢?另外,请注意我的路径中有反斜杠,但是由于准备好的声明,这已经被转义了,对吧?如有任何帮助,我们将不胜感激!

最佳答案

尝试逐步使用

 $stmt->execute();
 $result = $stmt->fetch(); // or fetchAll for multiple arrays
 $connection = null;

我正在使用这个,所以尝试一下......

关于php - 当按下链接时运行 MySQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43310912/

相关文章:

mysql - 使用什么数据库模型?

mysql - 如何使用golang从mysql中获取多个列

mysql - 开发一个从远程数据库获取内容的 iOS 应用程序

php - 将几何线连接在一起的 PostGIS 函数?

php - 在 Windows 10 家庭中设置 Composer 路径环境变量

javascript - 将jquery dataTables(带有CRUD功能)连接到mysql

具有哈希索引的 MySQL InnoDB 表

php - 如何使用 Laravel 5 获得人类可读格式的时间差异?

php - 带有 WordPress/php 子目录的 MVC 网站上的 Elmah

MySQL 按天分组不显示当月的结果