pdo查询将sql列拆分为一个字符数组

xcitsw88  于 2021-06-23  发布在  Mysql
关注(0)|答案(1)|浏览(291)

在查询本地数据库中的单个列时,它返回一个多维数组,每个字符串被拆分为单独的字符,而不是返回一个行数组。

pdo查询:

$hostname = '127.0.0.1';
$username = 'db_user';
$password = 'db_pass';
$dbname = 'db_name';
$port = '8889';

$conn = new PDO("mysql:host=$hostname;dbname=$dbname;port=$port", $username, $password);

$conn->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

$stmt = $conn->prepare('SELECT answers FROM table_name');

$stmt->execute();

$results = $stmt->fetch();

echo $results[0][1];

它返回'm'而不是整个字符串。我试过使用fetchall,fetchcolumn,fetch(pdo:fetch_column)类似的结果。知道我做错了什么吗?

2uluyalo

2uluyalo1#

你太过分了

echo $results[0][1];

当你打电话的时候 fetch() ,这将从select的一行返回一个值数组,所以在您的情况下,因为您只是获取 answers ,这意味着 $results[0] 将包含列中的值 answers . 当你使用 $results[0][1] 你的意思是把字符串的第二个字符取出来 $results[0] (因为这是一个字符串[]引用每个字符,就好像字符串是一个数组一样)。
如果你改写

echo $results[0];

你应该得到完整的专栏。
如果你使用 fetchAll() -当它返回一个包含所有行的数组时,应该会给出后面的结果。但是,由于数组是基于0的,所以应该使用

echo $results[0][0];

相关问题