私はMYSQL DBから人とその詳細を取得するphpファイルを書き直し、それを階層化しています(ハッキングなどから保護するため...)
現在編集中のPHPファイルは次のようになります。
<div id='idLeft'>
<?php
@session_start();
$_SESSION['auth'] = 'ok';
$db_server = "localhost";
$db_user = "username";
$db_pass = "******";
$db_database = "mydatabase";
$db_con = @mysql_connect($db_server, $db_user, $db_pass);
if(!$db_con) die("Database error!");
if(!@mysql_select_db($db_database, $db_con)) die("Database error!");
mysql_query("SET NAMES UTF8");
$query = "SELECT osobaID,ime,prezime FROM ssa_osoba";
$rs = mysql_query($query);
$i=0;
while( $row = mysql_fetch_assoc($rs)) {
?>
<div class='osoba'>
<div class="brojosobe">
<span class="otekst"><?php echo $i++.'.'; ?></span>
</div>
<div class ="imeprezime">
<span class="otekst"><?php echo $row['ime'].' '.$row['prezime'];?></span>
</div>
<div class='hidden'><?php echo $row['osobaID'];?></div>
</div>
<?php
}
?>
私はそれを次のように書き直しました:
<?php
@session_start();
try
{
require "inc/func.php";
require_once("db/db.php");
$db = db_layer::get();
$DBCONNECTION = $db->getHandle();
}
catch( Exception $Ex )
{
exit();
//die ( $Ex->getMessage() );
//echo $Ex;
}
そして、それを出力すべき部分は次のようになります。
<?php
$i=0;
while( $row = get_osoba() ) {
?>
<div class='osoba'>
<div class="brojosobe">
<span class="otekst"><?php echo$i++.'.'; ?></span>
</div>
<div class ="imeprezime">
<span class="otekst"><?php echo $row['ime'].' '.$row['prezime'];?></span>
</div>
<?php
}
?>
私の関数は /inc フォルダー (1 つのファイル functions.php) にあります。これらの関数が含まれています。
function osoba_query()
{
$query ="SELECT osobaID,ime,prezime FROM ssa_osoba";
return mysql_query($query);
}
function get_osoba()
{
$rs = osoba_query();
static $row = mysql_fetch_assoc($rs);
return $row;
}
ただし、常に最初の行のみを出力します。mysql_fetch_assoc はポインターを次の行に移動する必要がありますが、この場合は移動しません。
私は何をすべきか?
EDIT1:
私がこれを行う場合:
$query ="SELECT osobaID,ime,prezime FROM ssa_osoba";
$rs = mysql_query($query);
function get_osoba()
{
global $rs;
$row = mysql_fetch_assoc($rs);
return $row;
}
PHP 出力: 警告: mysql_fetch_assoc() はパラメーター 1 がリソースであると想定し、7 行目の D:\Xampp\htdocs\ssa\ilayer\inc\func.php で指定された null