Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用PHP编写CRUD函数_Php_Mysql - Fatal编程技术网

用PHP编写CRUD函数

用PHP编写CRUD函数,php,mysql,Php,Mysql,我正在用PHP编写一些CRUD函数(不是面向对象的),但遇到了一些小麻烦该函数工作正常。请回顾并提前阅读我遇到的实际问题。功能如下: <?php function db_s( $table, $condition = array(), $limit = '', $order = array(), $group = array(), $return_

我正在用PHP编写一些CRUD函数(不是面向对象的),但遇到了一些小麻烦该函数工作正常。请回顾并提前阅读我遇到的实际问题。功能如下:

<?php
function db_s(
            $table,
            $condition = array(),
            $limit = '',
            $order = array(),
            $group = array(),
            $return_query_string = false
) {
    $sql = '
        SELECT
            *
        FROM
            `'. $table .'`
    ';
    if (is_array($condition)) {
        if (count($condition) > 1) {
            $sql .= '
                    WHERE
                ';
            $sql .= implode(' AND ', $condition);
        }
        elseif (count($condition > 0)) { $sql .= ' WHERE '. $condition[0] .' '; }
    }
    elseif ($condition != '' && is_string($condition)) { $sql .= ' WHERE '. $condition .' '; }

    if (!empty($group)) {
        $sql .= '
                GROUP BY
            ';
        $sql .= implode(', ', $group);
    }
    if (!empty($order)) {
        $sql .= '
                ORDER BY
            ';
        $sql .= implode(', ', $order);
    }
    if ($limit != '') {
        $sql .= '
                LIMIT
                    '. $limit .'
            ';
    }
    //print '<pre>'. $sql .'</pre>';
    $query = mysql_query($sql) OR die(mysql_error() .'<p><pre>'. $sql .'</pre></p>');
    if ($return_query_string) { return $sql; }
    else { return $query; }
} // end db_s() function
?>

或者像这样:

$query = mysql_query($sql) OR die(mysql_error() .'<p><pre>'. $sql .'</pre></p>');

if($return_query_string) {
    return $sql;
} else { 
    while($result[] = mysql_fetch_array($query)) {}
    return $result;
}
foreach(db_s('users', 'active = 1') as $row) {
    //do cool stuff here
}

为了做到这一点,我尝试重写函数的结尾(实际返回查询的部分),但似乎无法使其正常工作。我试过这样的东西

}
//打印“”$sql‘’;
$query=mysql\u query($sql)或die(mysql\u error()。$sql.

); if($return\u query\u string){return$sql;} else{return mysql_fetch_array($query);}//

但它不是那样工作的。不幸的是,结果是。。。时好时坏的像这样使用时。通常,它返回的结果比它应该返回的多,并且它只会多次吐出第一个结果。。。我确实重写了
while()
循环,这样它就可以正确地使用函数
db_s()
。有人能告诉我为什么它不能这样工作吗?或者,如何返回结果,以便我可以按预期使用该函数?非常感谢您的帮助。提前谢谢

您现在需要使用PDO或MySQLI。解决方案类似,或者您可以对这些库使用*\u fetch\u all()

对于函数返回:


我不是支持函数或代码概念,只是回答问题。

事实上,我确实想提供帮助,并且一直在设置运行您的代码并试图重现您的问题。我没有你的数据库。不过,您现在可以在其他地方获得帮助。@robotsushi这不是您自己的私人支持频道。听起来你好像不想做任何工作。另外,请阅读这篇题为“这就是你应该做的事”的文章,题目是“多吗?我想你对它的工作原理感到困惑…@robotsushi‘theguy’一点也不困惑。我在这里提供帮助已经四年多了,你在这里已经三个月了。我想了解更多的信息,以便我能提供帮助。这通常是一个好主意,提供它,这样你就可以得到你来这里寻求的帮助。您给出的大部分细节都是关于当前如何使用该函数的。预期结果和实际结果将帮助我在我的dev env中设置代码和测试数据库,以尝试为您提供一个有效的函数。不过,看起来您在下面有一个答案。谢谢您的帮助!:)嗯,我不确定我是否完全理解这个建议。我需要在我的服务器上安装MySQLi或PDO吗?您的代码建议是否有必要?或者你不建议我使用我的db_s()函数并充分利用PDO或MySQLi吗?不过,我发布的是针对mysql的,请阅读红色大警告:谢谢你的帮助!这只是我几年前构建的PHP框架的一小部分,后来我转向了移动应用程序开发,有一段时间没有使用PHP了。这就解释了所有新的PDO和MySQLi!谢谢你的洞察力!你帮了大忙!
<?php
$results = db_s('messages', array('user_id = 1512', 'date < "2014-05-01"'), 10, 'date DESC');
while($row = mysql_fetch_assoc($results)) {
    // do cool stuff here
}
?>
<?php
$results = db_s('posts', 'unread = 1', '', 'date ASC', 'user_id', true);
print '<pre>'; print_r($results); print '</pre>';
?>
<?php
while ($row = db_s('messages', array('user_id = 1512', 'date < "2014-05-01"'), 10, 'date DESC')) {
    // do cool stuff here
}
?>
<?php
while ($row = db_s('users', 'active = 1')) {
    // do cool stuff here
}
?>
    }
    //print '<pre>'. $sql .'</pre>';
    $query = mysql_query($sql) OR die(mysql_error() .'<p><pre>'. $sql .'</pre></p>');
    if ($return_query_string) { return $sql; }
    else { return mysql_fetch_array($query); }  //<--- this line is modified
} // end db_s() function
?>
$query = mysql_query($sql) OR die(mysql_error() .'<p><pre>'. $sql .'</pre></p>');

if($return_query_string) {
    return $sql;
} else { 
    while($result[] = mysql_fetch_array($query)) {}
    return $result;
}
foreach(db_s('users', 'active = 1') as $row) {
    //do cool stuff here
}