SELECT Prepared statement
我试过了在这个社区和其他网站上发现的一切。但是我仍然没有完成我的目标。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>
<?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语句数据。请检查这个答案,希望它能帮助你。
编辑
请再试一次,并检查任何错误显示与否。
最后编辑
现在检查它现在运行正常,我只是我的本地服务器上运行它。
有两个参数
@NiravJoshi,当我运行你的脚本我得到HTTP错误500 – WouterS
@WouterS我不运行这个脚本我只是编辑我在脚本中看到错误。 –
@WouterS请设置ini_display_errors并告诉我你得到的错误 –
更新您需要首先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'];
我想了解你的第二个语法。 ':voornaam'和'$ voornaam'从哪里来? – WouterS
在'bindParam'或者其他语法中(如果有替代,注释行或标准)? – chris85
因此,在第二种语法中,您需要使用'$ stmt = $ conn-> prepare(“select id,voornaam FROM sollicitatie_form WHERE id =?”; $ stmt-> bindParam(':voornaam',$ voornaam,PDO :: PARAM_STR); $ stmt-> execute(array($ voornaam));' – WouterS
变化' “回波($ _POST [ '我正在寻找'])”'到'ID = $ _POST [ '我正在寻找'] '但仍不起作用 – WouterS
是的,我注意到其他一些问题,请参阅下面的答案。 (也不完全是我的意思) – chris85