我的功能问题应该列出所有"推文"。 我不知道为什么会出现错误,因为我之前使用过此代码(3个月),而且它可以用于我的其他项目。
我正在使用PHP 5.4.12
有我的代码:
function getTweet()
{
global $bdd;
$tweets = $bdd->query("SELECT * FROM tweets");
foreach($tweets as $tweet){
echo $tweet['content'];
}
}
有错误:
警告:非法字符串偏移'内容' (第8行)
使用print_r:
1Test 1700
1 = id
Test 1 = content
7 = my id
0 = retweet
0 = favourite
使用此代码我只有一个结果(但有几个结果):
function getTweet()
{
global $bdd;
$tweets[] = $bdd->query("SELECT * FROM tweets");
foreach($tweets as $tweet){
echo $tweet['content'];
}
}
有了这个,我就有了我的变种类型:
<?php
function getTweet()
{
global $bdd;
$tweets = $bdd->query("SELECT * FROM tweets");
echo gettype($tweets);
// Return "array"
foreach($tweets as $tweet){
echo gettype($tweet);
// Return "integerstringintegerintegerinteger"
}
}
&GT;
答案 0 :(得分:0)
这可能会有所帮助。它检查以确保$ tweet ['content']首先存在,如果不存在,将转储$ tweet中找到的数组键。这可以让您更好地了解数据可能会对触发这些错误做些什么。
function getTweet()
{
global $bdd;
$tweets = $bdd->query("SELECT * FROM tweets");
foreach($tweets as $tweet){
// For debugging, comment this out when tested:
if(!is_array($tweet) {
echo "This is NOT an array: $tweet \n<br />\n";
continue;
}
if(isset($tweet['content'])) {
echo $tweet['content'];
}
// For debugging, comment this out when tested:
else {
var_dump(array_keys($tweet));
}
}
}
答案 1 :(得分:0)
*->query
不返回&#34;数据&#34;在PHP的本机函数/ API中
$bdd->query
是一个自定义函数,因此如果您不发布函数代码,则无法知道导致失败的原因。
但如果代码与此问题相同:PHP SQL Syntax Error using Bind parameters
public function query($query, $params = null, $fetchmode = PDO::FETCH_ASSOC)
{
$query = trim($query);
$this->Init($query,$params);
if (stripos($query, 'select') === 0){
return $this->sQuery->fetchAll($fetchmode);
}
elseif (stripos($query, 'insert') === 0 || stripos($query, 'update') === 0 || stripos($query, 'delete') === 0) {
return $this->sQuery->rowCount();
}
else {
return NULL;
}
}
在某些时候,您可能会使用其他值更改PDO::FETCH_ASSOC
。
尝试:
...
if (stripos($query, 'select') === 0){
echo 'Mode is ASSOC ', (PDO::FETCH_ASSOC===$fetchmode ? 'TRUE' : 'FALSE'), '<BR>';//should return TRUE
return $this->sQuery->fetchAll($fetchmode);
}
...
这个&#34;测试用例&#34;必须返回TRUE
,如果返回FALSE
是您更改$fetchmode
我个人不知道为什么你在使用fetchAll时获取代码会更好
fetchAll
只在一个变量中汇集所有内容(更高的内存消耗PHP)fetch
一次请求一行