如何在php prepare statment中将数据插入数组?

jk9hmnmh  于 2021-06-20  发布在  Mysql
关注(0)|答案(2)|浏览(274)

我试图在使用prepare语句pdo之前将数据插入数组。
以下是我所做的:

$stmt = $pdo->prepare("SELECT * FROM settings"); 
$stmt->execute(array());
$row = $stmt->fetch(PDO::FETCH_ASSOC);
                    htmlspecialchars($row['site_name']);
                    htmlspecialchars($row['site_desc']);
                    htmlspecialchars($row['site_url']);
unset($stmt);

美国陆军:

$row['site_name'];

很好,但我觉得我错过了一件重要的事情。
我的问题是:我必须声明 $stmt->execute(array()); 像这样: $stmt->execute(array(':site_name'=>$site_name, ':site_name'=>$site_name,)); 在使用之前?
如何做到这一点?

$a['site_name'] = htmlspecialchars($row['site_name']);
 $a['site_desc'] = htmlspecialchars($row['site_desc']);
 $a['site_url'] = htmlspecialchars($row['site_url']);

美国陆军:

$a['site_name'];

我看了一些视频和教程,但没法让第二个例子奏效。

uoifb46i

uoifb46i1#

由于没有使用变量(通常是用户输入),因此严格来说不需要使用 prepared statement 所以你可以简单地用普通的 query 方法。

$a=array();

$sql = 'select * from `settings`;';
$res = $pdo->query( $sql );
if( $res ){
    while( $rs=$pdo->fetch( PDO::FETCH_OBJ ) ){
        $a['site_name']=$rs->site_name;
        $a['site_desc']=$rs->site_desc;
        $a['site_url']=$rs->site_url;
    }
}

但是,如果查询中有一些附加参数(通常是 where 子句)您可能希望使用 prepared statement 在那里你可以定义一个 placeholder 然后给它赋值,以便在 execute 方法

$sql='select * from `settings` where `site_name`=:site_name;';
$params=array(':site_name'=>'example.com');
$stmt=$pdo->prepare( $sql );
if( $stmt ){
    $res=$pdo->execute( $params );
    if( $res ){
        while( $rs=$stmt->fetch( PDO::FETCH_OBJ ) ){
            $a['site_name']=$rs->site_name;
            $a['site_desc']=$rs->site_desc;
            $a['site_url']=$rs->site_url;
        }
    }
}
h7wcgrx3

h7wcgrx32#

使用 $stmt->fetchAll(PDO::FETCH_ASSOC)) 用雷姆的回答

相关问题