这是我当前的代码:

<?php
//Account validation
session_start();
if(!(isset($_SESSION['login']))){
header("location:welcome.php");

}
else{
$userid=$_SESSION['userid'];
}

//connecting to mediadatabase
//server info
$server_username="root";
$server_password="";
$database="toob";
$server="127.0.0.1";

$db_handle=mysql_connect($server, $server_username, $server_password);
$db_found=mysql_select_db($database, $db_handle);

//Generating Media iD and checking against previous media ids already in use
$query= "SELECT max(media_id) FROM media WHERE id = '$userid'";
$result = mysql_query($query) or die("Unable to perform query");
$numrows = mysql_num_rows($result);

if($numrows > 0) {
$mediaid = mysql_result($result,0) or die("Can't retrieve cell");
$mediaid = $mediaid + 1;
}
else{
print("No records exisiting");
$mediaid = 1;
}
print ($mediaid);

?>


我正在尝试为特定用户在“ Media_id”列中找到最大的数字。用户由其“ id”标识。如果找到结果,则要基于media_id值创建一个变量,并将其命名为$ mediaid,然后再将$ mediaid递增1。该变量将在以后的编程中使用。如果没有该用户标识的记录,但是我要将$ mediaid设置为1。

问题是用户是否没有记录。如您所见,我已经尝试使用num rows函数,但是它不起作用,这是我的语法问题吗?任何建议将不胜感激!

谢谢 :)

最佳答案

如果在表中找不到行,则查询将返回在NULL列中带有max(media_id)的行
因此,您的mysql_num_rows($result);将始终返回1;

您需要检查最大值

//Generating Media iD and checking against previous media ids already in use
$query= "SELECT MAX(media_id) AS max_id FROM media WHERE id='$userid'";
$result = mysql_query($query) or die("Unable to perform query");

$mediaid = mysql_result($result,0) or die("Can't retrieve cell");

if($mediaid != null) {
   $mediaid = $mediaid + 1;
} else {
   print("No records exisiting");
   $mediaid = 1;
}


SqlFiddle:http://sqlfiddle.com/#!2/360dc8/1/0

10-05 20:43