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