在查询本地数据库中的单个列时,它返回一个多维数组,每个字符串被拆分为单独的字符,而不是返回一个行数组。
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)类似的结果。知道我做错了什么吗?
1条答案
按热度按时间2uluyalo1#
你太过分了
当你打电话的时候
fetch()
,这将从select的一行返回一个值数组,所以在您的情况下,因为您只是获取answers
,这意味着$results[0]
将包含列中的值answers
. 当你使用$results[0][1]
你的意思是把字符串的第二个字符取出来$results[0]
(因为这是一个字符串[]引用每个字符,就好像字符串是一个数组一样)。如果你改写
你应该得到完整的专栏。
如果你使用
fetchAll()
-当它返回一个包含所有行的数组时,应该会给出后面的结果。但是,由于数组是基于0的,所以应该使用