Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/57.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读取字段_Php_Mysql_Database_Arrays - Fatal编程技术网

数据库中的PHP读取字段

数据库中的PHP读取字段,php,mysql,database,arrays,Php,Mysql,Database,Arrays,我有一个读取数据库表字段的脚本。它不读取id的第一列。它读取其他字段并将它们添加到数组中。我在for循环中添加了a-1,以获得每个字段,但没有成功 $host=rtrim($_POST['host']); $user=rtrim($_POST['user']); $pass=rtrim($_POST['pass']); $dbselect=rtrim($_POST['dbselect']); $table=rtrim($_POST['table']); $classname=rtrim($_PO

我有一个读取数据库表字段的脚本。它不读取id的第一列。它读取其他字段并将它们添加到数组中。我在for循环中添加了a-1,以获得每个字段,但没有成功

$host=rtrim($_POST['host']);
$user=rtrim($_POST['user']);
$pass=rtrim($_POST['pass']);
$dbselect=rtrim($_POST['dbselect']);
$table=rtrim($_POST['table']);
$classname=rtrim($_POST['classname']);

$key_values = array();

$link = mysql_connect($host,$user,$pass);
$db_select = mysql_select_db($dbselect);
$query = mysql_query('SHOW COLUMNS FROM '.$table.'');


if (!$link) {
    die('Could not connect to MySQL server: ' . mysql_error());
}
$dbname = $dbselect;
$db_selected = mysql_select_db($dbname, $link);
if (!$db_selected) {
    die("Could not set $dbname: " . mysql_error());
}
$res = mysql_query('select * from '.$table.'', $link);
$num_fields = mysql_num_fields($res);
for($i=0;$i<$num_fields;$i++){

$key_values[]=mysql_field_name($res,$i);

}
echo "<pre>";
print_r($key_values);
echo "</pre>";
$host=rtrim($_POST['host']);
$user=rtrim($_POST['user']);
$pass=rtrim($_POST['pass']);
$dbselect=rtrim($_POST['dbselect']);
$table=rtrim($_POST['table']);
$classname=rtrim($_POST['classname']);
$key_values=array();
$link=mysql\u connect($host、$user、$pass);
$db\u select=mysql\u select\u db($dbselect);
$query=mysql_query('SHOW COLUMNS FROM'.$table.');
如果(!$link){
die('无法连接到MySQL服务器:'.MySQL_error());
}
$dbname=$dbselect;
$db\u selected=mysql\u select\u db($dbname,$link);
如果(!$db_选中){
die(“无法设置$dbname:”.mysql_error());
}
$res=mysql_查询('select*from'.$table'.',$link);
$num\u fields=mysql\u num\u fields($res);

对于($i=0;$i我不明白它为什么会这样做,但这应该更可靠:

$res = mysql_query('select * from '.$table.'', $link);
while ($row = mysql_fetch_array($res, MYSQL_ASSOC)) {
    $key_values[] = array_keys($row);
}
echo "<pre>";
print_r($key_values);
echo "</pre>";

尝试使用php本机函数(之前也需要查看此函数) 尝试此代码后($res==''):

$res=mysql\u查询('select*from'.$table'.',$link);
而($row=mysql\u fetch\u数组($res,mysql\u ASSOC)){
$key_values[]=数组_键($row);
}
回声“;
打印(关键值);
回声“;

对于
mysql.*
函数,不再支持,它们已经不再维护,将来也会维护。您应该使用或更新代码,以确保将来项目的功能


因此
array\u keys($result)
给出了一个列名。我想我应该坚持使用
$key\u values
变量。我刚刚复制了你的代码,它工作正常,按预期显示了所有列名!我认为该错误似乎不正确。奇怪。
$res = mysql_query('select * from '.$table.'', $link);
while ($row = mysql_fetch_array($res, MYSQL_ASSOC)) {
    $key_values[] = array_keys($row);
}
echo "<pre>";
print_r($key_values);
echo "</pre>";
<?php
$host=rtrim($_POST['host']);
$user=rtrim($_POST['user']);
$pass=rtrim($_POST['pass']);
$dbselect=rtrim($_POST['dbselect']);
$table=rtrim($_POST['table']);
$classname=rtrim($_POST['classname']);

$db = new mysqli($host,$user,$pass,$dbselect);
if($db->connect_error)
        die('Connect Error (' . mysqli_connect_errno() . ') '. mysqli_connect_error());

// NOTE real_escape_string may not work for tables untested
$result = $db->query("SELECT * FROM " . $db->real_escape_string($table));
if (!$result)
        die "Error: " . $db->error;

while ($row = $result->fetch_object())
{
    echo $row->id;
}
$result->close();
$db->close();