我需要排除字段'密码'来自SELECT * FROM $table;
,其中$table
是PHP变量。
四个无效表中只有一个有密码'字段。
这就是我所拥有的:
function myData($table)
{
include "conf.php";
$con = mysqli_connect($host, $user, $password, $db);
$sql = "SELECT * FROM $table;";
$resul = mysqli_query($con, $sql);
return $resul;
}
有什么想法吗?
编辑:这是我处理返回数据的方式:
$resulFields = myFields($table);
$resulData = myData($table);
while ($fields = mysqli_fetch_array($resulFields, MYSQLI_ASSOC)) {
$field = $fields['Field'];
$header .= "<th>$field</th>";
while ($data_array = mysqli_fetch_array($resulData, MYSQLI_ASSOC) ) {
$body .= "<tr id='$data_array[id]'>";
foreach ($data_array as $data){
$body .= "<td>$data</td>";
}
}
}
对不起,如果它有点乱,我就开始学习编程了。
答案 0 :(得分:2)
我知道您希望拥有一个能够返回给定表中所有结果的PHP函数。也许不是返回$resul
变量并在返回后解析数据,而是应该在返回之前将其解析为关联数组。你可以尝试这样的事情:
function myData($table) {
include "conf.php";
$con = mysqli_connect($host, $user, $password, $db);
$sql = "SELECT * FROM {$table}";
$resul = mysqli_query($con, $sql);
$row = $resul->fetch_assoc();
unset( $row['password'] );
return $resul;
}
虽然我觉得重要的是要注意,为了正确的编码实践和单一责任,您应该为要运行的每个查询提供特定的数据访问功能。我不建议使用只返回表中所有内容的单个函数。还应该命名函数,以便您知道它们正在做什么。 “myData”非常不具描述性,因此对于数据访问功能来说是一个非常糟糕的名称。
此外,如果您要命名变量$resul
,请继续输入“t”并将其命名为$result
FFS。
答案 1 :(得分:1)
在foreach循环中,从数组中获取键和数据。 (当前代码仅 数据。)
在foreach循环中,对key的值进行条件测试。
如果密钥的值与&#34;密码&#34;匹配,则跳过输出该数组元素的任何内容。如果它不匹配键,则输出它(就像当前代码正在做的那样。)
查看foreach的替代语法:
参考文献:http://php.net/manual/en/control-structures.foreach.php
对于简单的条件测试
参考:http://php.net/manual/en/control-structures.if.php
考虑是否要匹配&#34;密码&#34;,&#34; PASSWORD&#34;,&#34;密码&#34;等。您可能需要不区分大小写的匹配。
答案 2 :(得分:0)
也许你可以这样做:
function myData($table) {
include "conf.php";
$con = mysqli_connect($host, $user, $password, $db);
$sql = "SELECT field1, field2";
if ($table == "TABLE_WITH_PASSWORD") {
$sql.=",password";
}
$sql.=" FROM $table;";
$resul = mysqli_query($con, $sql);
return $resul;
}
答案 3 :(得分:0)
显然,最好的选择是选择你想要的东西:
SELECT id, name, whatever FROM $table
希望我不会走错路,但除了查询字段和删除密码之外,还有一种方法:
$columns['tableA'] = array('id', 'name', 'whatever');
$columns['tableB'] = array('id', 'user', 'something');
然后做:
$select = implode(',', $columns[$table]);
$sql = "SELECT $select FROM $table";
答案 4 :(得分:0)
IMO我认为在这种情况下最简单的方法是使用special case
用于php
function myData($table) {
include "conf.php";
$con = mysqli_connect($host, $user, $password, $db);
if($table == "special_case_table"){
$sql = "SELECT col1, col2, col3 FROM special_case_table;"; //except "password" column
}
else $sql = "SELECT * FROM $table;";
$resul = mysqli_query($con, $sql);
return $resul;
无需更多功能或在数据库的INFORMATION_SCHEMA中搜索以查找列密码。