我有这段 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/