$result = mysql_query('SELECT * FROM Users WHERE UserName LIKE $username');
Вы определяете строку, используя одинарные кавычки, и PHP не анализирует строки с разделителями одиночной кавычки. Чтобы получить переменную интерполяцию, вам нужно использовать двойные кавычки или конкатенацию строк (или их комбинацию). См. http://php.net/manual/en/language.types.string.php для получения дополнительной информации.
Также вы должны проверить, что mysql_query вернул действительный ресурс результата, иначе fetch_ *, num_rows и т. д. не будут работать с результатом, поскольку это не результат! IE:
$username = $_POST['username']; $password = $_POST['password']; $result = mysql_query('SELECT * FROM Users WHERE UserName LIKE $username'); if( $result === FALSE ) { trigger_error('Query failed returning error: '. mysql_error(),E_USER_ERROR); } else { while( $row = mysql_fetch_array($result) ) { echo $row['username']; } }
http://us.php.net/manual/en/function.mysql-query.php для получения дополнительной информации.
Под управлением Android CursorWindow
ограничен 2 МБ данных. Попытка работать с Cursor
, которая имеет больше данных, чем это приведет к тому, что эти «не удалось прочитать» исключения.
Вы можете обойти это, не включая столбцы с большими данными в вашем запросе. Замените SELECT *
более селективным SELECT column1,column2,...
без каких-либо больших столбцов данных.
В целом вы не должны хранить большие данные, такие как изображения или содержимое файла в базе данных Android sqlite. Храните большие данные в файловой системе и просто сохраните путь в своей базе данных.
с помощью @pskink я наконец достиг этого кода, который может получить все данные без какой-либо ошибки. tnx all.
ArrayList<QuestionInfoHolder> result = new ArrayList<QuestionInfoHolder>();
SQLiteDatabase db = getReadableDatabase();
android.database.sqlite.SQLiteStatement st = db.compileStatement("SELECT Content FROM " + ARTICLES_TABLE_NAME + " WHERE ID = ?;");
String query = "SELECT ID,CategoryID,Title,Date FROM " + ARTICLES_TABLE_NAME +";";
Cursor cursor = db.rawQuery(query, null);
if(cursor != null)
{
for (cursor.moveToFirst(); !cursor.isAfterLast(); cursor.moveToNext())
{
st.bindLong(1, cursor.getInt(0));
String content = st.simpleQueryForString();
result.add(new QuestionInfoHolder(cursor.getInt(0),
cursor.getInt(1),
cursor.getString(2),
cursor.getString(3),
content));
}
}
Прочитайте курсор таким образом
if (cursor.moveToFirst()) {
do {
result.add(new QuestionInfoHolder(cursor.getInt(0),
cursor.getInt(1),
cursor.getString(2),
cursor.getString(3),
cursor.getString(4)));
}
while (cursor.moveToNext());
}