2017-06-18 101 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

相关问题