在一个脚本中运行两个完全不同的sqli查询

时间:2016-12-06 08:31:27

标签: php mysqli

我是author_id的新手。

我有这个页面:

php

所以,这里发生的是:

当您打开<?php function renderForm($id, $StaffFullName, $StaffJobPosition, $error) { ?> <!doctype html> <html> <head><title></title></head> <body> <?php // if there are any errors, display them if ($error != '') { echo '<div>'.$error.'</div>'; } ?> <form action="" method="post"> <input type="hidden" name="id" value="<?php echo $id; ?>"/> <div> <p>ID: <?php echo $id; ?></p> Name: * <input type="text" name="StaffFullName" value="<?php echo $StaffFullName; ?>"/><br/> Job Position: * <select name="JobPosition"> <?php $query = "SELECT * FROM LUT_JOBPOS"; $result = mysqli_query($connection, $query); while($row = mysqli_fetch_assoc($result)){ if ($StaffJobPosition == $row['JobposID']) { echo "<option value='{$row['JobposID']}' selected='selected'>{$row['JobposTitle']}</option>"; } else { echo "<option value='{$row['JobposID']}'>{$row['JobposTitle']}</option>"; } } $result->close(); ?> </select><br/> <input type="submit" name="submit" value="Update"> <input type="button" onClick="parent.location='view.php'" value="Back"> </div> </form> </body> </html> <?php } // connect to the database require_once('../../authenticate.php'); // check if the form has been submitted. If it has, process the form and save it to the database if (isset($_POST['submit'])) { // do some funky stuff } else // if the form hasn't been submitted, get the data from the db and display the form { // get the 'id' value from the URL (if it exists), making sure that it is valid (checking that it is numeric/larger than 0) if (isset($_GET['id']) && is_numeric($_GET['id']) && $_GET['id'] > 0) { // query db $id = $_GET['id']; $query = "SELECT * FROM STAFF WHERE StaffID=$id"; $result = mysqli_query($connection, $query); $row = mysqli_fetch_assoc($result); $result->close(); // check that the 'id' matches up with a row in the database if($row) { // get data $StaffFullName = $row['StaffFullName']; $StaffJobPosition = $row['StaffJobPosition']; // show form renderForm($id, $StaffFullName, $StaffJobPosition, ''); } else // if no match, display result { echo "No results!"; } } else // if the 'id' in the URL isn't valid, or if there is no 'id' value, display an error { echo 'Error!'; } } ?> 之类的页面时,它会从edit.php?id=1表中提取相关记录的数据,并在页面上显示它们以供用户编辑。 这部分代码工作正常。 我还希望用户能够从下拉框中选择“作业位置”可能的值。下拉框应从数据库中的另一个表STAFF获取其数据。 这是代码中不起作用的部分。

我之前在这个页面上使用过LUT_JOBPOS命令,它完美无缺。但是有人告诉我改为开启mysql_query。 由于我进行了转换,因此无法找到如何在同一脚本上运行这两个查询。 我用mysqli_query命令搞砸了一下,根据我调用它的位置,我可以运行一个或另一个查询,但绝不会同时运行这两个查询。

查看我的网络托管服务商的日志,我唯一能看到的可能与我的问题相关的是:

  

“mod_fcgid:stderr:PHP注意:未定义的变量:第24行的/var/www/vhosts/myhostdomain.com/httpdocs/prod15/admin/staff/edit.php中的连接”

连接变量来自require_once,它包含数据库的连接参数。我确定它已设置,否则第一个查询(获取用户数据)将无效。

我在某处读到你不能在同一个脚本上运行两个authenticate.php查询。 那么我应该如何使用sqli表(查找表)?

PS:我知道为了显示数据,我可以使用LUT这就是我的工作。 但是当我编辑数据时,我希望用户只能从UNION表中的可能值中选择(下拉选择框)

任何帮助?

1 个答案:

答案 0 :(得分:0)

您的代码中存在很多问题。在真正的应用程序中使用它之前,你真的需要先查看它,但对于你的具体问题,我猜是这样的。

您正在拨打第24行中的$result = mysqli_query($connection, $query);行,并且只有在您拨打require_once('../../authenticate.php');后才会这样做。

正如您所说,$connection var在authenticate.php中定义,因此第24行未定义。

尝试在php脚本的第一行使用require