Reputation: 360
I am using a MySQL query to calculate the number of records based an certain where conditions. But each time the website/database is used by multiple users from multiple systems. The count result varies dramatically.
I have tried to find a lot but could not figure the issue. I am attaching the screen-shots. Please help!
Here's the screenshot: https://drive.google.com/file/d/0B4kI3aImsSLmaGN3cXo1Rk1saDg/view?usp=sharing
Structure of table:
CREATE TABLE IF NOT EXISTS `rap_partmpuser` (
`par_tmp_track` int(11) NOT NULL,
`par_tmp_exam` int(11) NOT NULL,
`par_tmp_user` int(11) NOT NULL,
`par_tmp_status` varchar(100) NOT NULL,
`par_tmp_sdate` date NOT NULL,
`par_tmp_edate` date NOT NULL,
`par_tmp_adate` date NOT NULL,
`par_tmp_tdate` date NOT NULL,
`par_terdate` date NOT NULL,
`par_tmp_score` int(11) NOT NULL,
`par_tmp_tques` int(11) NOT NULL,
`par_tmp_uopt1` varchar(250) NOT NULL,
`par_tmp_uopt2` varchar(250) NOT NULL,
`par_tmp_uopt3` varchar(250) NOT NULL,
`par_tmp_uopt4` varchar(250) NOT NULL,
`par_tmp_uopt5` varchar(250) NOT NULL,
`par_tmp_uopt6` varchar(250) NOT NULL,
`par_tmp_uopt7` varchar(250) NOT NULL,
`par_tmp_uopt8` varchar(250) NOT NULL,
`par_tmp_uopt9` varchar(250) NOT NULL,
`par_tmp_uopt10` varchar(250) NOT NULL,
`par_tmp_uopt11` varchar(250) NOT NULL,
`par_tmp_uopt12` varchar(250) NOT NULL,
`par_tmp_uopt13` varchar(250) NOT NULL,
`par_tmp_uopt14` varchar(250) NOT NULL,
`par_tmp_uopt15` varchar(250) NOT NULL,
`par_tmp_filter` int(11) NOT NULL,
`par_tmp_sfilter` int(11) NOT NULL,
`par_tmp_cpyid` int(11) NOT NULL,
`par_tmp_usrid` int(11) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
And my query is
SELECT count(*)
FROM `rap_partmpuser`
where par_tmp_cpyid='10106' and par_tmp_track='458'
and par_tmp_usrid='771' and par_tmp_status='Active'
Sometimes it gives me the result 46, sometimes 26, sometimes 70. The correct result is 70. Why is it different sometimes?
Upvotes: 1
Views: 216
Reputation: 2914
$reponse = $bdd->prepare('
SELECT count(*)
FROM rap_partmpuser
where par_tmp_cpyid=10106 and par_tmp_track=458
and par_tmp_usrid=771 and par_tmp_status=\'Active\'');
$reponse->execute();
$donnees = $reponse->fetch();
echo $donnees[0] ;
Upvotes: 0
Reputation: 520
I think the answer is simple. I'm not sure that this is the only mistake.
SELECT count(*) FROM rap_partmpuser where par_tmp_cpyid=10106 and par_tmp_track=458 and par_tmp_usrid=771 and par_tmp_status='Active';
Don't use 'single quotes' to check integer values like par_tmp_cpyid='10106'
.Try above query if you get correct answer comment below.
Upvotes: 1