从SQL返回值作为按钮名称,单击按钮后显示文本

时间:2016-04-06 04:29:34

标签: php html mysql mysqli

我正在做一个使用php和MySQL的项目。我是php的新手,我已经搜索了很多,但仍然没有找到一个干净的解决方案。

问题是,首先用户输入关键词并将搜索值(表名称)返回给变量。

make build

现在按钮已创建。如果用户单击任何按钮,它应该更进一步并返回每个表的列名。我不知道如何处理非静态按钮。

2 个答案:

答案 0 :(得分:1)

首先,不要忘记设置实际的<form>。把它们全部包起来。

其次,我建议,只需在提交按钮中使用相同的名称属性:

name="table_name"

所以它现在看起来应该是这样的:

echo '<h2> Search Result: </h2>';
$searchSQL = "
SELECT DISTINCT table_name FROM information_schema.columns 
WHERE LOWER(column_name) LIKE LOWER('%$search%') AND table_schema = 'university'
";

$result = $conn->query($searchSQL);

echo '<form method="POST" action="show_colums.php">'; // opening form tag

if ($result->num_rows > 0) {
    // output data of each row
    while($row = $result->fetch_assoc()) {
    $table_name = $row['table_name'];
    echo "<input type='submit' name='table_name' value='$table_name' /> <br/>";
                              //     ^ don use the $table_name in the name attribute
}

echo '</form>'; // closing form tag

不要忘记在表单标记中添加action=""属性。只需将其指向将执行表单处理的PHP脚本即可。对于此示例,只需使用show_columns.php

现在,只需在将处理所选按钮的PHP文件中应用DESCRIBE

内部show_columns.php

if(!empty($_POST['table_name'])) {
    $table_name = $_POST['table_name']; // get input
    $sql = "DESCRIBE {$table_name}"; // use DESCRIBE
    $query = $conn->query($sql); // execute query
    while($row = $query->fetch_assoc()) { // fetch rows
        // do whatver you need to do, table or whatever you like
        echo $row['Field']; // field name
    }
}

编辑:或者您可以使用第一张表单上的预准备语句更加安全:

echo '<h2> Search Result: </h2>';
$searchSQL = "
    SELECT DISTINCT table_name FROM information_schema.columns 
    WHERE LOWER(column_name) LIKE LOWER(?) AND table_schema = 'university'
    ";
$stmt = $conn->prepare($searchSQL);
$search = '%' . $search . '%';
$stmt->bind_param('s', $search);
$stmt->execute();
$stmt->bind_result($table_name);
echo '<form method="POST" action="show_columns.php">';
while($stmt->fetch()) {
    echo "<input type='submit' name='table_name' value='$table_name' /><br/>";
}
echo '</form>';

答案 1 :(得分:0)

而不是创建提交按钮创建按钮type='button'使用javascript / jquery或使用html属性调用将返回表详细信息的页面:

echo "<input type='button' name='" . $table_name . "' value='" . $table_name .
     "' onclick=\"location.href='http://yourwebsite.com?tbl=" . $table_name."'\"><br />";

您也可以同样调用一些js函数。