0

我有一个脚本可以读取我的数据库表字段。它没有读取作为 id 的第一列。它读取其他字段并将它们添加到数组中。我在 for 循环中添加了 -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>";
4

3 回答 3

0

我不明白它为什么会这样做,但这应该更可靠:

$query = mysql_query('select * from `%s`', mysql_real_escape_string($table), $link);
while ($result = mysql_fetch_array($query)) {
  print_r(array_keys($result));
}
于 2013-06-15T11:18:17.723 回答
0

尝试使用 php 原生函数mysql_fetch_array(之前也需要查看此问题)尝试此代码后($res === ' resources '):

$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>";
于 2013-06-15T11:20:45.390 回答
0

不再支持功能mysql_*,它们已正式弃用不再维护,将来将被删除您应该使用PDOMySQLi更新您的代码,以确保您的项目在未来的功能。

<?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();
于 2013-06-15T11:23:10.630 回答