SQL没有正确返回表中的行

时间:2015-06-11 09:50:12

标签: php mysql database pdo

我的数据库中存在表格问题。有三列如下:

Name (VARCHAR(25))
QText (TEXT)
AText (TEXT)

我的查询通过PDO运行:

SELECT `AText` FROM `Exam_QA_Data` WHERE `Name` = '$name' AND `QText` = '$question'

处理后看起来像这样,显然$question变量的长度会改变:

SELECT `AText` FROM `Exam_QA_Data` WHERE `Name` = 'ExamServerTestExam' AND `QText` = 'This is the first question'

从我所看到的内容取决于字符串的长度而不是$question,有时会返回一行,有时则不返回任何内容。

如果字符串很短(27个字符),那么它返回该行的'AText'内容,但如果字符串很长(106个字符),如果$question是一个长字符串则没有。我检查了数据库中的条目,并且整个字符串都存在,因此该行与搜索的完全相同。

我也尝试过使用:

SELECT `AText` FROM `Exam_QA_Data` WHERE `Name` = '$name' AND `QText` LIKE '%$question%'

无法理解这是否是数据库问题,如果是这样,为什么?它似乎是输入字符串长度的问题。

非常感谢。

1 个答案:

答案 0 :(得分:0)

因此经过一些测试后,我发现搜索不喜欢长度超过80个字符的字符串。为了做到这一点,但仍然得到相同的结果我输入带有通配符的字符串,如下面的代码块所示:

class Student(models.Model):
    ....
    ....
    ....

    PaidFees = models.IntegerField(blank = True, default = 0)
    BalanceFees = models.IntegerField(blank = True, default = 0)
    ....
    ....

def save_model(self, request, obj, form, change):
    if obj.BalanceFees == 0:
        obj.BalanceFees = obj.ActualFees
    else:
        obj.BalanceFees = obj.BalanceFees-obj.PaidFees
    obj.save()

感谢所有提出建议或试图提供帮助的人!