PHP编写的声明->;仅返回数据库中列的第一个字母

PHP编写的声明->;仅返回数据库中列的第一个字母,php,sql,prepared-statement,Php,Sql,Prepared Statement,我有这个密码 $sql = "SELECT name FROM data WHERE id=? LIMIT 0,1"; //prepares statement $stmt = self::getConnection()->prepare($sql); $stmt->bind_param("i", $id); $ids = array(1,2,3); foreach ($ids as $

我有这个密码

        $sql = "SELECT name FROM data WHERE id=? LIMIT 0,1";
        //prepares statement 
        $stmt = self::getConnection()->prepare($sql);
        $stmt->bind_param("i", $id);
        $ids = array(1,2,3);
        foreach ($ids as $key => $id) {
            $stmt->execute();
            $stmt->bind_result($name);
            $stmt->fetch();
            $stmt->store_result();

            var_dump($name);
        }
我的数据库表如下所示

id | name
1  | First Name
2  | Second Name
3  | Third Name
现在输出如下所示:

string(10) "First Name" 
string(1) "S" 
string(1) "T"
名字是正确的。但它只输出以下行的第一个字母。我不知道为什么。 我用另一个整数类型的列进行了尝试。成功了。只是这个字符串类型的列没有

我还尝试用如下方式更改
$ids数组
$ids=Array(2,3,1)
。然后输出

string(11) "Second Name" 
string(1) "T" 
string(1) "F"
我不知道该怎么办。有人看到我的错误了吗

编辑:

PHP 5.5和Mysql 5.5.31以及var_dump:

编辑2:

-- phpMyAdmin SQL Dump
-- version 4.0.5
-- http://www.phpmyadmin.net
--
-- Host: rdbms
-- Erstellungszeit: 07. Jun 2014 um 19:21
-- Server Version: 5.5.31-log
-- PHP-Version: 5.3.27

SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";


/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;

--
-- Datenbank: `DB1673555`
--

-- --------------------------------------------------------


CREATE TABLE IF NOT EXISTS `data` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` tinytext NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=4 ;


INSERT INTO `data` (`id`, `name`) VALUES
(1, 'First Name'),
(2, 'Second Name'),
(3, 'Third Name');

/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;

我刚刚看到转储文件说我使用PHP5.3。但是在strato的网站上他们说5.5,这是我发现的。我认为它是在类型
tinytext
中的原因。因为当我使用你的数据库转储时,错误会在我的本地电脑上重现。但当我将列类型更改为
varchar 255
时,代码工作正常。

在不使用
store\u result
的情况下尝试它。非常有趣的错误。我试着在本地复制,一切都很好。你能告诉我你的数据库转储、PHP和MySQL版本吗?
store\u结果
不起作用。我更新了问题好吧,PHP和MySQL的版本和我的一样。但我请求MySQL转储具有结构的表。我想看看数据和字符编码的类型。对于创建转储,您可以使用
PHPMyAdmin
Adminer
。抱歉,您指的是数据库对象。我更新了一次问题again@stepozer伟大的研究。继续保持下去