mappenzellar
asked on
query and if statement won't work
Ok. I am looping through the numbers 1 - 31. I have a url variable called month. I have a query and statement that should be like.....if date = '12/5' then link number otherwise, don't link number. For example there is a 12/5 in the database and the url month=12, but right now everything is linking. Here is the code, but something isn't right:
$count = 1;
while ($count <=31)
{
$sql = "SELECT id from oldies_history where date = '$_REQUEST[month]/$count'" ;
$ok = @mysql_query($sql);
if (!@ok)
{
echo("$count ") ;
}
else
{
echo( "<a href='edit_history_detail. php?month= $_REQUEST[ month&day= $count'>$c ount</a></ li> & nbsp;" );
}
$count++;
}
$count = 1;
while ($count <=31)
{
$sql = "SELECT id from oldies_history where date = '$_REQUEST[month]/$count'"
$ok = @mysql_query($sql);
if (!@ok)
{
echo("$count ")
}
else
{
echo( "<a href='edit_history_detail.
}
$count++;
}
ASKER
nope caught that, but still no go
$ok = @mysql_query($sql);
the '@' is masking all errors I think, so try
$ok = mysql_query($sql);
the '@' is masking all errors I think, so try
$ok = mysql_query($sql);
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
I believe that when you put arrays directly into strings you have to put braces around them. eg "{$_REQUEST['month']}"
On an aside, you should really put your input through mysql_escape_string(), before sending it to the database.
mysql_query will return a value even if no rows are returned.
If you want to see if a row was returned use mysql_num_rows($result) // where $result is what is returned from mysql_query().
you should be using the if($ok) for error checking, since if it returns false(or 0), you generally have a problem. You shouldn't be using it to check if a row exists, because quite simply that is not how it works.
You also didn't close the square bracket in your altenative option.
I think you are trying to find all the rows with that date, but I'm not quite sure.
I've made a few changes to your code.
$count = 1;
for($count = 1; $count <=31; ++$count) {
$sql = "SELECT id from oldies_history where date = '{$_REQUEST['month']}/$cou nt'";
$ok = mysql_query($sql);
if(!$ok){
die(sprintf("Query Failed: %s\n", mysql_error());
}
$date_exists = mysql_num_rows($ok);
if (!$date_exists)
{
echo("$count ") ;
}
else
{
echo( "<a href='edit_history_detail. php?month= {$_REQUEST ['month']} &day=$coun t'>$count< /a></li>&n bsp; " );
}
}
On an aside, you should really put your input through mysql_escape_string(), before sending it to the database.
mysql_query will return a value even if no rows are returned.
If you want to see if a row was returned use mysql_num_rows($result) // where $result is what is returned from mysql_query().
you should be using the if($ok) for error checking, since if it returns false(or 0), you generally have a problem. You shouldn't be using it to check if a row exists, because quite simply that is not how it works.
You also didn't close the square bracket in your altenative option.
I think you are trying to find all the rows with that date, but I'm not quite sure.
I've made a few changes to your code.
$count = 1;
for($count = 1; $count <=31; ++$count) {
$sql = "SELECT id from oldies_history where date = '{$_REQUEST['month']}/$cou
$ok = mysql_query($sql);
if(!$ok){
die(sprintf("Query Failed: %s\n", mysql_error());
}
$date_exists = mysql_num_rows($ok);
if (!$date_exists)
{
echo("$count ")
}
else
{
echo( "<a href='edit_history_detail.
}
}
if (!@ok)
into
if (! $ok)