从URL使用PHP到$ _GET [ID]

时间:2014-08-14 13:04:31

标签: php

我使用简单的代码根据一些名为VIN的唯一ID从DB获取一些数据。 我编写了一个脚本,如果有人在表单中插入它,它可以正常工作,但现在我需要编辑以更自动地工作,并使用URL中的$ _GET [&#39; vin&#39;]并根据它显示结果。< / p>

我尝试的代码如下: public $ vin = null;

 public function __construct( $data = array() ) {
     if( isset( $data['vin'] ) ) $this->vin = stripslashes( strip_tags( $data['vin'] ) );
 }

 public function storeFormValues( $params ) {
    $this->__construct( $params ); 
 }

 public function fetchByVinEvidence($vin) {
     $success = false;
     try{
        $con = new PDO( DB_HOST, DB_USER, DB_PASS ); 
        $con->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
        $sql = "SELECT * FROM evidence_vin WHERE vin = :vin LIMIT 1";
        $stmt = $con->prepare( $sql );
        $stmt->bindValue( "vin", $this->vin, PDO::PARAM_STR );
        $stmt->execute();
            echo "<table>";
            echo "<th>First Registration</th>";
            echo "<th>Validity Until</th>";
            echo "<th>Rpm</th>";
            echo "<th>Max-Speed</th>";
            echo "<th>Action</th>";
            while ($row = $stmt->fetch()){
                echo "<tr>";
                echo "<td>24</td>";
                echo "<td>".$row['claim_number']."</td>";
                echo "<td>".$row['license']."</td>";
                echo "<td>".$row['country']."</td>";
                echo "<td>".$row['vin']."</td>";
                echo "</tr>";
            }
            echo "</table>" ;
            }catch(PDOExeption $e){
            echo $e->getMessage();
            echo $con->errorInfo();
            }

         return $success;
     }

并调用函数:

$vin = $_GET['vin'];
echo $vin;
$data = new Data;
$data->fetchByVinEvidence($vin);

有人可以帮我吗?

2 个答案:

答案 0 :(得分:2)

您将变量$vin传递给函数fetchByVinEvidence,但随后使用类级变量$this->vin而不是传递的变量。

$stmt->bindValue( "vin", $this->vin, PDO::PARAM_STR );

应该是

$stmt->bindValue( "vin", $vin, PDO::PARAM_STR );

OR 如果你需要使用它,那么将类级变量设置为函数开头的传递变量:

public function fetchByVinEvidence($vin) {
     $this->vin = $vin;
     ....

答案 1 :(得分:1)

 public function __construct( $data = array() ) {
     if( isset( $data['vin'] ) ) $this->vin = stripslashes( strip_tags( $data['vin'] ) );
 }

__构造如果等待数组,直接给它$ _GET:

$data = new Data($_GET); // and not $_GET['vin'] as it was the case before my edit
$data->fetchByVinEvidence($vin);

它给出了null,因为你没有向构造函数发送任何东西,所以它使用了默认值:一个空数组。