我正在做一个使用php和MySQL的项目。我是php的新手,我已经搜索了很多,但仍然没有找到一个干净的解决方案。
问题是,首先用户输入关键词并将搜索值(表名称)返回给变量。
make build
现在按钮已创建。如果用户单击任何按钮,它应该更进一步并返回每个表的列名。我不知道如何处理非静态按钮。
答案 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函数。