Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/270.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP PDO将行的id传递给url_Php_Mysql_Pdo - Fatal编程技术网

PHP PDO将行的id传递给url

PHP PDO将行的id传递给url,php,mysql,pdo,Php,Mysql,Pdo,我需要帮助!就我的一生而言,我不知道我做错了什么。。。我试图构建一个简单的搜索脚本,从mysql数据库返回一些结果,从这些结果中,我希望能够单击每个单独的结果,并将其传递到一个新页面,比如results.php,在那里加载该结果的详细信息,我想类似于一个电子商务网站,在那里显示产品的结果,单击其中一个,该产品及其附加详细信息将加载到新页面中。我知道我需要将id传递到url,但我一直遇到的问题是,它只是将搜索结果中的最后一个id传递到url。。。但是在搜索结果中收集所有正确的id 我对php pd

我需要帮助!就我的一生而言,我不知道我做错了什么。。。我试图构建一个简单的搜索脚本,从mysql数据库返回一些结果,从这些结果中,我希望能够单击每个单独的结果,并将其传递到一个新页面,比如results.php,在那里加载该结果的详细信息,我想类似于一个电子商务网站,在那里显示产品的结果,单击其中一个,该产品及其附加详细信息将加载到新页面中。我知道我需要将id传递到url,但我一直遇到的问题是,它只是将搜索结果中的最后一个id传递到url。。。但是在搜索结果中收集所有正确的id

我对php pdo等非常陌生。我曾尝试在网上找到解决方案,花了几天时间寻找,但我要么得到相同的结果,要么得到错误,这表明我做得不对。。。不管怎样,这就是我到目前为止所做的:

<?php

require('inc/connect/config.php');

$output = "";

if(!isset($_POST['search'])) {
$output = "";
}
if(isset($_POST['search'])) {
$search_query = $_POST['search'];
$search_query = preg_replace("#[^0-9a-z]#i", "", $search_query);

try {
    $query = $db->prepare('SELECT * FROM clients WHERE name LIKE "%' . $search_query . '%" OR town LIKE "%' . $search_query . '%"');
    $query->execute();

    while($r = $query->fetch(PDO::FETCH_ASSOC)) {
        $bname = $r['name'];
        $btown = $r['town'];
        $id = $r['id'];

        $output .= $bname . '<br>' . $btown . '<br>' . $id . '<br><br>';
    }
    if($query->rowCount() < 1) {
        $output = "no results found";
    }

} catch (PDOException $e) {
    echo "failed search";
}
}

?>

<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>search</title>
<link rel="stylesheet" href="css/style.css" />
</head>
<body>
<div style="padding: 20%; text-align: center;">
    <h3>search</h3>
    <p>or search by <a href="categories.php">category</a></p><br>

    <form method="post" action="search-test.php">
        <label>&lt;3 </label><input type="text" name="search" id="search" placeholder="search by brand or town..." style="width: 40%;"><br><br>
        <input type="submit" value="search">
    </form>
    <br>
    <a href="results.php?id=<?php echo $id; ?>"><?php echo $output; ?></a>
</div>


</body>

</html>

$id在每次传递到while循环时都会被重写。所以,它的最终结果是你的最后一个id,这是真的

您的第一个选择是将SQL结果存储到数组中,然后在视图中对其进行循环。您的第二个选择是:

替换:

$output .= $bname . '<br>' . $btown . '<br>' . $id . '<br><br>';
$output.=$bname'
“$B镇。”
“$身份证。”

';
作者:

$output.=“

”;
以及:


作者:


$id在每次传递到while循环时都会被重写。因此,它的最终结果是您的最后一个id,这是真的

您的第一个选择是将SQL结果存储到数组中,然后在视图中对其进行循环。第二个选择是:

替换:

$output .= $bname . '<br>' . $btown . '<br>' . $id . '<br><br>';
$output.=$bname.
'.$btown.
'.$id.

';
作者:

$output.=“

”;
以及:


作者:


$id在每次传递到while循环时都会被重写。所以,它的最终结果是你的最后一个id,这是真的

您的第一个选择是将SQL结果存储到数组中,然后在视图中对其进行循环。您的第二个选择是:

替换:

$output .= $bname . '<br>' . $btown . '<br>' . $id . '<br><br>';
$output.=$bname'
“$B镇。”
“$身份证。”

';
作者:

$output.=“

”;
以及:


作者:


$id在每次传递到while循环时都会被重写。因此,它的最终结果是您的最后一个id,这是真的

您的第一个选择是将SQL结果存储到数组中,然后在视图中对其进行循环。第二个选择是:

替换:

$output .= $bname . '<br>' . $btown . '<br>' . $id . '<br><br>';
$output.=$bname.
'.$btown.
'.$id.

';
作者:

$output.=“

”;
以及:


作者:



到结果页的链接是
到结果页的链接是
到结果页的链接是
到结果页的链接是
首先,我建议重构当前代码的一些部分,即您准备语句的方式。不要将参数直接包含在prepare语句中,而应该将它们抽象到
params
方法中;不这样做会破坏准备语句的目的,并使您容易接受SQL注入

$query = $db->prepare('SELECT * FROM clients WHERE name LIKE :query OR town LIKE :query');
$params = array(':query' => '%' . $search_query . '%');
$query->execute($params);
其次,PHP PDO有一个
fetchAll
方法,您可以通过该方法进行迭代,而不是多次调用
fetch

$results = $query->fetchAll(PDO::FETCH_ASSOC);
if(count($results) < 1) {
    $output = "no results found";
}
else {
    for($results as $r) {
        $bname = $r['name'];
        $btown = $r['town'];
        $id = $r['id'];

        $output .= $bname . '<br>' . $btown . '<br>' . $id . '<br><br>';
    }
}
然后通过


祝你好运

首先,我建议重构当前代码的一些部分,即如何准备语句。不要将参数直接包含在prepare语句中,而应该将它们抽象到
params
方法中;不这样做会破坏准备语句的目的,并使您容易接受SQL注入

$query = $db->prepare('SELECT * FROM clients WHERE name LIKE :query OR town LIKE :query');
$params = array(':query' => '%' . $search_query . '%');
$query->execute($params);
其次,PHP PDO有一个
fetchAll
方法,您可以通过该方法进行迭代,而不是多次调用
fetch

$results = $query->fetchAll(PDO::FETCH_ASSOC);
if(count($results) < 1) {
    $output = "no results found";
}
else {
    for($results as $r) {
        $bname = $r['name'];
        $btown = $r['town'];
        $id = $r['id'];

        $output .= $bname . '<br>' . $btown . '<br>' . $id . '<br><br>';
    }
}
然后通过


祝你好运

首先,我建议重构当前代码的一些部分,即如何准备语句。不要将参数直接包含在prepare语句中,而应该将它们抽象到
params
方法中;不这样做会破坏准备语句的目的,并使您容易接受SQL注入

$query = $db->prepare('SELECT * FROM clients WHERE name LIKE :query OR town LIKE :query');
$params = array(':query' => '%' . $search_query . '%');
$query->execute($params);
其次,PHP PDO有一个
fetchAll
方法,您可以通过该方法进行迭代,而不是多次调用
fetch

$results = $query->fetchAll(PDO::FETCH_ASSOC);
if(count($results) < 1) {
    $output = "no results found";
}
else {
    for($results as $r) {
        $bname = $r['name'];
        $btown = $r['town'];
        $id = $r['id'];

        $output .= $bname . '<br>' . $btown . '<br>' . $id . '<br><br>';
    }
}
然后通过


祝你好运

首先,我建议重构当前代码的一些部分,即如何准备语句。不要将参数直接包含在prepare语句中,而应该将它们抽象到
params
方法中;不这样做会破坏准备语句的目的,并使您容易接受SQL注入

$query = $db->prepare('SELECT * FROM clients WHERE name LIKE :query OR town LIKE :query');
$params = array(':query' => '%' . $search_query . '%');
$query->execute($params);
其次,PHP PDO有一个
fetchAll
方法,您可以通过该方法进行迭代,而不是多次调用
fetch

$results = $query->fetchAll(PDO::FETCH_ASSOC);
if(count($results) < 1) {
    $output = "no results found";
}
else {
    for($results as $r) {
        $bname = $r['name'];
        $btown = $r['town'];
        $id = $r['id'];

        $output .= $bname . '<br>' . $btown . '<br>' . $id . '<br><br>';
    }
}
然后通过


祝你好运

朱利安,你太棒了。。。我知道我需要做一些事情来防止SQL注入,但我还没有研究过,所以谢谢@凯莉·史密斯不用担心,熟能生巧!坚持下去!朱利安,你太棒了。。。我知道我需要做一些事情来防止SQL注入,但我还没有研究过,所以谢谢@凯莉·史密斯不用担心,熟能生巧!坚持下去!朱利安,你太棒了。。。我知道我需要做一些事情来防止SQL注入,但我还没有研究过,所以谢谢@凯莉·史密斯不用担心,熟能生巧!坚持下去!朱利安,你太棒了。。。我知道我需要做点什么