我使用简单的代码根据一些名为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);
有人可以帮我吗?
答案 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,因为你没有向构造函数发送任何东西,所以它使用了默认值:一个空数组。