2017-06-18 155 views
1

我試過了在這個社區和其他網站上發現的一切。但是我仍然沒有完成我的目標。SELECT Prepared statement

我想達到的目標:

在一個頁面上我有一個按鈕,一個輸入框。當我填寫ID號碼時,我想從所有與該ID號碼鏈接的mysql中獲取所有信息....由於某種原因,它不起作用。任何提示或提示?

<?php 

$servername = "xxxxx"; 
$username = "xxxxx"; 
$password = "xxxxx"; 
$dbname = "xxxxxx"; 


try{ 
    $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password); 
    // set the PDO error mode to exception 
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 


    $sql = "INSERT id, voornaam FROM sollicitatie_form WHERE id= "echo ($_POST['zoek'])""; 
    // $stmt->bindParam(':id', $id, PDO::PARAM_STR); 
    $stmt->bindParam(':voornaam', $voornaam, PDO::PARAM_STR); 
    $stmt->exec($sql); 

    $result = $stmt->fetchAll(); 

    foreach ($result as $row){ 
     echo "{$row['voornaam']}";  

    } 
} 
    // use exec() because no results are returned 
    catch(PDOException $e) 
    { 
    echo $sql . "<br>" . $e->getMessage(); 
    } 

$conn = null; 
?> 


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<meta http-equiv="Content-Type" /></meta> 

<head> 
    <title>Sollicitatie Formulier</title> 
    <link href="styletest.css" rel="stylesheet"> 
</head> 
<body> 

<div class="form"> 

    <div class="tab-content"> 
    <h1>Sollicitatie Formulier</h1> 

    <form method="post" enctype="multipart/form-data" > 


     <div class="top-row"> 
     <div class="field-wrap"> 

      <div class="field-wrap"> 
      <input type="text" name="zoek" value=""> 
      <input type="submit" name="submit" value="zoek"> 
      </div> <!-- /field-wrap--> 

    </form> 

    </div><!-- /tab-content--> 

</div> <!-- /form --> 


</body> 
</html> 
+0

變化' 「回波($ _POST [ '我正在尋找'])」'到'ID = $ _POST [ '我正在尋找'] '但仍不起作用 – WouterS

+0

是的,我注意到其他一些問題,請參閱下面的答案。 (也不完全是我的意思) – chris85

回答

3
<?php 

$servername = "xxx"; 
$username = "xxx"; 
$password = "xxx"; 
$dbname = "xxx"; 


if(isset($_POST['submit'])): 
try{ 
    $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password); 
    // set the PDO error mode to exception 
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 


    $stmt = $conn->prepare("SELECT id, voornaam FROM sollicitatie_form WHERE id= :voornaam and city = :city"); 
    // $stmt->bindParam(':id', $id, PDO::PARAM_STR); 
    //$stmt->bindParam(':voornaam', $voornaam, PDO::PARAM_STR); 
    $stmt->bindParam(':voornaam',$_POST['zoek'], PDO::PARAM_STR); 
    $stmt->bindParam(':city',$_POST['city'], PDO::PARAM_STR); 
    $stmt->execute(); 

    $result = $stmt->fetchAll(); 

    foreach ($result as $row){ 
     echo "{$row['voornaam']}";  

    } 
} 
    // use exec() because no results are returned 
    catch(PDOException $e) 
    { 
    echo $sql . "<br>" . $e->getMessage(); 
    } 

$conn = null; 
endif; 
?> 


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<meta http-equiv="Content-Type" /></meta> 

<head> 
    <title>Sollicitatie Formulier</title> 
    <link href="styletest.css" rel="stylesheet"> 
</head> 
<body> 

<div class="form"> 

    <div class="tab-content"> 
    <h1>Sollicitatie Formulier</h1> 

    <form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>" enctype="multipart/form-data" > 


     <div class="top-row"> 
     <div class="field-wrap"> 

      <div class="field-wrap"> 
      <input type="text" name="zoek" value=""> 
      <input type="text" name="city" value=""> 
      <input type="submit" name="submit" value="zoek"> 
      </div> <!-- /field-wrap--> 
     </div> 
     </div> 
    </form> 

    </div><!-- /tab-content--> 

</div> <!-- /form --> 


</body> 
</html> 

如果你想獲取你必須使用SELECT語句不是INSERT語句數據。請檢查這個答案,希望它能幫助你。

編輯

請再試一次,並檢查任何錯誤顯示與否。

最後編輯

現在檢查它現在運行正常,我只是我的本地服務器上運行它。

有兩個參數

+0

@NiravJoshi,當我運行你的腳本我得到HTTP錯誤500 – WouterS

+0

@WouterS我不運行這個腳本我只是編輯我在腳本中看到錯誤。 –

+0

@WouterS請設置ini_display_errors並告訴我你得到的錯誤 –

2

更新您需要首先prepare語句,使用select(未插入),在查詢中使用一個佔位符,execute準備好的對象。例如:

$stmt = $conn->prepare("select id, voornaam FROM sollicitatie_form WHERE id= :voornaam"; 
// $stmt->bindParam(':id', $id, PDO::PARAM_STR); 
$stmt->bindParam(':voornaam', $voornaam, PDO::PARAM_STR); 
$stmt->execute(); 

應該這樣做。我通常使用的另一種語法是:

$stmt = $conn->prepare("select id, voornaam FROM sollicitatie_form WHERE id= ?"; 
$stmt->execute(array($voornaam)); //or array(':voornaam' =>$voornaam) if you prefer named placeholders 

也不是echo是輸出。您可以連接或放置一個變量到雙引號,然後您的PHP字符串將具有該值。

又如:

echo "{$row['voornaam']}" 

可以只是:

echo $row['voornaam']; 
+0

我想了解你的第二個語法。 ':voornaam'和'$ voornaam'從哪裏來? – WouterS

+0

在'bindParam'或者其他語法中(如果有替代,註釋行或標準)? – chris85

+0

因此,在第二種語法中,您需要使用'$ stmt = $ conn-> prepare(「select id,voornaam FROM sollicitatie_form WHERE id =?」; $ stmt-> bindParam(':voornaam',$ voornaam,PDO :: PARAM_STR); $ stmt-> execute(array($ voornaam));' – WouterS

相關問題