有人可以告诉我我错过了什么。以下sql查询仅返回从我的数据库中获取的字符串的第一个字母:
$result = mysql_query("SELECT * FROM users) or die("error in the query");
感谢。
$result = mysql_query("SELECT *
FROM properties
JOIN users USING(UserId)
WHERE Level <> 'Admin' $pages->limit") or die("could not load all the properties");
$i=0;
while($row = mysql_fetch_array($result)) {
$fn[$i] = $row ['FN'];
$ln[$i] = $row ['LN'];
$phone[$i] = $row ['Phone'];
$Email[$i] = $row ['Email'];
}
...从昨天起让我头痛的代码部分。 $fn
,$ln
,$email and
$ phone`全部只包含一个字符。我认为错误在我自己的页面上,但我只是看不到它。有关财产的任何内容都包含仪式值
答案 0 :(得分:3)
如果您使用while()
将变量分配给数组,我认为您不需要使用$i
,如果您将代码更改为:
while($row = mysql_fetch_array($result)) {
$fn[] = $row ['FN'];
$ln[] = $row ['LN'];
$phone[] = $row ['Phone'];
$Email[] = $row ['Email'];
}
$row['whatever']
变量应附加到数组中。这是作为答案发布的,因为它作为评论发布太长了(至少清晰可见);但是,我不认为这会影响你的问题。
但是,值得尝试:
`echo "<pre>" . print_r(get_defined_vars(),true) . "</pre>";
查看变量的内容是什么,以及它们是否作为单字符字符串从db返回,或者是否在代码中的某处发生。
答案 1 :(得分:1)
或者:
一个。数据库中的字段以一个字符的长度声明,因此数据实际上被截断
湾你得到了正确的数据,但显示数据的代码(你还没有发布)是错误的,导致这个结果
答案 2 :(得分:1)
我只能假设您之前的代码中某处已将$ln
,$ln
,$phone
和$Email
设置为某个默认字符串值。然后,因为你没有在循环中从0更改$ i的值,所以你将这些字符串的第一个字母设置为等于从mysql_fetch_array()
返回的字符串值,这只会改变第一个字符串信件。很难解释所以请允许我提供一个例子:
$tmp = 'A';
$tmp[0] = 'It does not matter how long this string is!';
echo $tmp;
该片段的结果是单个字符“I”被回显。
您的代码将起作用:
$fn = $ln = $phone = $Email = array();
$i=0;
while($row = mysql_fetch_array($result)) {
$fn[$i] = $row ['FN'];
$ln[$i] = $row ['LN'];
$phone[$i] = $row ['Phone'];
$Email[$i] = $row ['Email'];
++$i;
}
或者找到将变量设置为字符串的位置。
考虑使用一组“用户”对象,因为拆分这样的相关信息很少有用。
e.g。
class User {
public $first_name = '';
public $last_name = '';
public $phone_number = '';
public $email = '';
public function __construct($first, $last, $phone, $email) {
$this->first_name = $first;
$this->last_name = $last;
$this->phone_number = $phone;
$this->email = $email;
}
public function full_name() {
return $first_name . ' ' . $last_name;
}
}
while ($row = mysql_fetch_array($result)) {
$users[] = new User($row['FN'], $row['LN'], $row['Phone'], $row['Email']);
}
对象,恕我直言,不应该有公共属性,但这是出于示例目的。
答案 3 :(得分:0)
也许你的foreach循环不正确。 SQL看起来不错。也许你以后做错了什么
答案 4 :(得分:0)
您需要获取返回的数组。 添加如下内容:
$row = mysql_fetch_array($result);
echo $row[0];
答案 5 :(得分:0)
我有一次类似的问题....在为它们赋值之前定义数组帮助我
尝试
$fn = array();
进入while循环之前
答案 6 :(得分:0)
我今天刚遇到这个问题。 (结果只显示每个变量的第一个字母)。
情况是我的表单数据($_GET
)使用的变量名与稍后在查询后使用的数组相同。
一旦我更改了表单数据变量名称,一切都很好。
因此,作为对懒人的提醒,当您将旧代码粘贴到页面中时,请仔细检查变量名称! :)