PHP 函数和 SQL 访问分层

标签 php mysql sql

我正在重写一个 php 文件,该文件从 MYSQL 数据库获取人员及其详细信息并将其分层(以防止黑客攻击等......)

我目前正在编辑的 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 文件夹中(一个文件 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 应该将指针移动到下一行,但在这种情况下它不会。

我该怎么办?

编辑1:

如果我这样做:

$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

最佳答案

每次调用 osoba_query() 时,您都会重新运行查询,这会重置所有内容。

不要那样做。

关于PHP 函数和 SQL 访问分层,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10020801/

相关文章:

mysql - 构建 SQL 查询来检索标记的项目

mysql - SQL 获取首先创建的金额最高的行

sql - 我需要将 HTML 电子邮件存储在数据库中。那是个坏主意吗?

sql - 从多个条件中选择

php - 用于选择不包含特定父元素的所有元素的 XPATH 表达式

php - MySQL - 比较来自 Ajax 数组的值,如果不在表中则删除它们

php - MYSQL 语句未正确回显

php - Laravel DomPDF Google 字体未加载

php - 处理大型 If 语句? - PHP

MySQL。左连接单个匹配行