php - 如何从 MySQL 和 PHP 获取数组字符串

标签 php mysql sql

我在 MySQL 数据库中有一些数据,在一张表和一列中,如下所示:

|column|
|data1 |
|data2 |
  1. 如何使用此查询从数据库中获取此数据?

    从表 WHERE 列 IN ('data1','data2') 中选择 id

  2. 如何在这部分定义变量以便查询可以读取字符串数组?

    IN('data1','data2')

最佳答案

tl;博士:

使用mysqli_函数:mysqli_connect() , mysqli_query() , mysqli_fetch_object()等连接并查询数据库。然后使用mysqli_bind_param()将绑定(bind)参数添加到查询中。

对于第一个问题如何从数据库中获取这些数据,以便我可以在此查询中使用它:有多个选项:

  1. 使用mysqli_函数:mysqli_connect() , mysqli_query() , mysqli_fetch_object()等等
  2. PHP Data Objects

*注意:以下示例使用变量作为数据库连接值 - 这些变量可以包含在另一个文件中、预先设置、从 ini 文件中设置(例如,使用 mysqli.default_host 和其他 mysqli_函数)等,就像这个例子:

$serverName = '127.0.0.1'; //MySQL database server running on the same machine
$userName = 'user';
$password = 'data';
$databaseName = 'sampleData';

mysqli_函数:

程序风格:

$connection = mysqli_connect($databaseServer, $userName, $password, $databaseName);
$query = "SELECT id FROM table WHERE column IN ('data1','data2')";
$ids = array(); //for use later on
if ($result = mysqli_query($connection, $query)) {
    //fetch objects (or could use mysqli_fetch_array()
    while ($obj = mysqli_fetch_object($result)) {
        $ids[] = $obj->id; //or use array_push()
    }
    /mysqli_free_result($result);
}

/* close connection */
mysqli_close($connection );

面向对象的风格:

$mysqli = new mysqli($databaseServer, $userName, $password, $databaseName);
$query = "SELECT id FROM table WHERE column IN ('data1','data2')";
$ids = array(); //for use later on
if ($result = $mysqli->query($query)) {
    //fetch objects (or could use fetch_array()
    while ($obj = $result->fetch_object()) {
        $ids[] = $obj->id; //or use array_push()
    }
    /* free result set */
    $result->close();
}

PDO 函数:

$connection = new PDO('mysql:host='.$databaseServer.';port=3306;dbname='.$databaseName.';charset=UTF8;',$username,$password); 
$query = "SELECT id FROM table WHERE column IN ('data1','data2')";
$ids = array(); //for use later on

foreach ($connection->query($query) as $row) {
        $ids[] = $obj->id; //or use array_push()
}

对于您的第二个问题 如何在此部分中定义变量以便查询可以读取数组字符串,您可以:

  1. 使用implode()连接值:

    $query = "从表 WHERE 列中选择 id ('".implode("', '",$values).")";

  2. 使用 mysqli_bind_param() 添加绑定(bind)参数或PDO's bindParam() 。这里的主要好处是,您无需担心在字符串周围添加引号(如果您使用单引号分隔查询,则可能会转义单引号)。

例如与 PDO:

$params = array();
foreach ($values as $index=>$value) {
    $params[] = ':value'.$index;
}
$sth = $dbh->prepare('SELECT id FROM table WHERE column IN ('.implode(',',$params).')');

foreach ($values as $index=>$value) {
    $sth->bindParam(':value'.$index, $value, PDO::PARAM_STR);
}
$sth->execute();

关于php - 如何从 MySQL 和 PHP 获取数组字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40953337/

相关文章:

MySQL:MySQL 表中的两个不同值被视为相同(不能设置唯一键)

sql - PostgreSQL unnest() 连续整数按数字分组

mysql - #1054 - 字段列表中的未知列

php - 使用 javascript 获取文本字段的值并将其发布到表单的操作中

mysql - NOT IN 查询响应时间过长

mysql - 如何与网络共享您在本地设置的网站

连接时可能带有空值的 MySQL 查询

php符号显示

javascript - 使用 html 链接启动 .exe [firefox]

php - 使用 Swiftmailer 从 gmail 发送电子邮件