Sql 如何将其转换为使用PDO?

Sql 如何将其转换为使用PDO?,sql,select,pdo,Sql,Select,Pdo,我想使用PDO来选择(搜索)数据库。 搜索“表单”有多个可使用的字段。。可以填写1或多个,以帮助优化搜索。(或者可以有许多项为空) 以下是我(本地)使用的内容: //本地主机详细信息 $db_username=“root”//数据库用户名 $db_password=“”//数据库密码 $db_database=“test”//数据库名称 $db_host=“localhost”; mysql\u connect($db\u主机,$db\u用户名,$db\u密码); @mysql_选择_数据库($

我想使用PDO来选择(搜索)数据库。 搜索“表单”有多个可使用的字段。。可以填写1或多个,以帮助优化搜索。(或者可以有许多项为空)

以下是我(本地)使用的内容:

//本地主机详细信息
$db_username=“root”//数据库用户名
$db_password=“”//数据库密码
$db_database=“test”//数据库名称
$db_host=“localhost”;
mysql\u connect($db\u主机,$db\u用户名,$db\u密码);
@mysql_选择_数据库($db_数据库)或死亡(“无法连接到数据库”);
如果(isset($_POST['submit']){
//定义字段列表
$fields=array('first','trialdate','wcity','wstate','plantif');
$conditions=array();
//循环遍历定义的字段
foreach($fields作为$field){
//如果字段已设置且不为空
如果(isset($\u POST[$field])&&$\u POST[$field]!=''){
//在转义用户输入的值时创建新条件(SQL注入)
$conditions[]=“`$field`类似“%”。mysql\u real\u escape\u字符串($\u POST[$field])。“%”;
}
}   
//构建查询
$query=“从myTable中选择*”;
//如果定义了条件
如果(计数($条件)>0){
//附加条件
$query.=“WHERE.”内爆('OR',$conditions);//您可以更改为'OR',但我建议应用过滤器
}   
$result=mysql\u query($query);
如果(isset($_POST['submit'])){
while($row=mysql\u fetch\u数组($result)){
echo$row['first']。“
”;//单个值 //构建显示行..等所有内容的面板 } } }
这一直运作良好。。。但我想转换为使用PDO方法

我试了几次…但我错过了一些东西

这是我到目前为止试过的

//localhost details
$db_username="root"; //database user name
$db_password="";//database password
$db_database="test"; //database name
$db_host="localhost";

//PDO DB connection
$conn = new PDO('mysql:host='.$db_host.'dbname='.$db_database.'charset=utf8', $db_username, $db_password);

if(isset($_POST['submit'])) {

    $stmt = $conn->prepare('SELECT * FROM myTable WHERE first LIKE :first OR trialdate LIKE :trialdate OR wcity LIKE :wcity OR wstate LIKE :wstate OR plantif LIKE :plantif');

//build query placeholders (*note: use bindValue for $_POST values) 
    $stmt->bindValue(':first', '%' . $_POST['first'] . '%'); 
    $stmt->bindValue(':trialdate',  '%' . $_POST['trialdate'] . '%');
    $stmt->bindValue(':wcity',  '%' . $_POST['wcity'] . '%');
    $stmt->bindValue(':wstate',  '%' . $_POST['wstate'] . '%');
    $stmt->bindValue(':plantif',  '%' . $_POST['plantif'] . '%');

    $stmt->execute();

    foreach ($stmt as $row) {
        // do something with $row
        echo $row['first'] . "<br />"; //individual value
    }
}
//本地主机详细信息
$db_username=“root”//数据库用户名
$db_password=“”//数据库密码
$db_database=“test”//数据库名称
$db_host=“localhost”;
//PDO数据库连接
$conn=newpdo($mysql:host='.$db\u host.dbname='.$db\u database.charset=utf8',$db\u username,$db\u password);
如果(isset($_POST['submit'])){
$stmt=$conn->prepare('从myTable中选择*,其中first LIKE:first或trialdate LIKE:trialdate或wcity LIKE:wcity或wstate LIKE:wstate或plantif LIKE:plantif');
//生成查询占位符(*注意:将bindValue用于$\u POST值)
$stmt->bindValue(':first','%.$\u POST['first'].%');
$stmt->bindValue(':trialdate','%.$\u POST['trialdate'].%');
$stmt->bindValue(':wcity','%.$\u POST['wcity'].%');
$stmt->bindValue(':wstate','%.$\u POST['wstate'].%');
$stmt->bindValue(':plantif','%.$\u POST['plantif'].%');
$stmt->execute();
foreach($stmt作为$row){
//用$row做点什么
echo$row['first']。“
”;//单个值 } }

我需要帮助才能让PDO示例使用显示的结果/行/值?

任何人??我对使用PDO非常陌生。。所以我需要一些指导。或是我在这里做错了什么的指点,以便将来不再做同样的事情!附:昨天编辑了什么?由@rink.attendant.6编写?没有消息/评论。。只是编辑?你可以点击“昨天编辑”链接查看你文章的修订历史。谢谢你通知我。(这里也不允许使用“谢谢”吗?看来这是你删掉的?)
//localhost details
$db_username="root"; //database user name
$db_password="";//database password
$db_database="test"; //database name
$db_host="localhost";

//PDO DB connection
$conn = new PDO('mysql:host='.$db_host.'dbname='.$db_database.'charset=utf8', $db_username, $db_password);

if(isset($_POST['submit'])) {

    $stmt = $conn->prepare('SELECT * FROM myTable WHERE first LIKE :first OR trialdate LIKE :trialdate OR wcity LIKE :wcity OR wstate LIKE :wstate OR plantif LIKE :plantif');

//build query placeholders (*note: use bindValue for $_POST values) 
    $stmt->bindValue(':first', '%' . $_POST['first'] . '%'); 
    $stmt->bindValue(':trialdate',  '%' . $_POST['trialdate'] . '%');
    $stmt->bindValue(':wcity',  '%' . $_POST['wcity'] . '%');
    $stmt->bindValue(':wstate',  '%' . $_POST['wstate'] . '%');
    $stmt->bindValue(':plantif',  '%' . $_POST['plantif'] . '%');

    $stmt->execute();

    foreach ($stmt as $row) {
        // do something with $row
        echo $row['first'] . "<br />"; //individual value
    }
}