mysql_result的语法问题与行数有关

时间:2013-08-02 06:52:42

标签: php mysql syntax

这是我目前的代码:

<?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增加一个。该变量将在稍后的编程中使用。如果该用户ID没有记录,但我想将$ mediaid设置为1。

问题是如果用户没有记录。我已经尝试过使用num rows函数,但是它无法正常工作这是我的语法问题吗?任何建议都会受到大力赞赏!

谢谢:)

2 个答案:

答案 0 :(得分:0)

如果您的表格中未找到任何行,您的查询将在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

答案 1 :(得分:0)

简而言之:

$mediaid = ($mediaid = mysql_result($result,0)) ? $mediaid++ : 1;

说明:如果该用户存在mediaid,那么mysql_result()将返回它并填充$ mediaid变量(因此if子句将为true且$ mediaid将设置为$ mediaid + 1)否则mysql_result()将返回false并且$ mediaid将设置为1。