- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 MySQL 数据库中有一些数据,在一张表和一列中,如下所示:
|column||data1 ||data2 |
如何使用此查询从数据库中获取此数据?
从表 WHERE 列 IN ('data1','data2') 中选择 id
如何在这部分定义变量以便查询可以读取字符串数组?
IN('data1','data2')
最佳答案
tl;博士:
使用mysqli_函数:mysqli_connect() , mysqli_query() , mysqli_fetch_object()等连接并查询数据库。然后使用mysqli_bind_param()将绑定(bind)参数添加到查询中。
对于第一个问题,如何从数据库中获取这些数据,以便我可以在此查询中使用它:
有多个选项:
*注意:以下示例使用变量作为数据库连接值 - 这些变量可以包含在另一个文件中、预先设置、从 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()
}
对于您的第二个问题 如何在此部分中定义变量以便查询可以读取数组字符串
,您可以:
使用implode()连接值:
$query = "从表 WHERE 列中选择 id ('".implode("', '",$values).")";
使用 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/
我是一名优秀的程序员,十分优秀!