1

これは私の現在のコードです:

<?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 増やします。この変数は、後でプログラミングで使用されます。ただし、そのユーザー ID のレコードがない場合は、$mediaid を 1 に設定します。

問題は、ユーザーのレコードが存在しない場合です。ご覧のとおり num rows 関数を使用してみましたが、機能していません。これは私の構文の問題ですか?? どんなアドバイスでも大歓迎です!

ありがとう :)

4

2 に答える 2

0

テーブルに行が見つからない場合、クエリは列にある行を返しNULLます。 したがって、常に1が返されます。max(media_id)
mysql_num_rows($result);

最大値を確認する必要があります

//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

于 2013-08-02T07:03:14.077 に答える
0

要するに:

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

説明: そのユーザーの mediaid が存在する場合、mysql_result() はそれを返し、$mediaid 変数を埋めます (if 句が true になり、$mediaid が $mediaid+1 に設定されます)。それ以外の場合、mysql_result() は false を返し、$mediaid は1 に設定します。

于 2013-11-12T06:55:04.723 に答える