Php 无法清除错误mysql\u fetch\u array()希望参数1是给定的资源、对象

Php 无法清除错误mysql\u fetch\u array()希望参数1是给定的资源、对象,php,mysqli,Php,Mysqli,我正在尝试构建一个SELECT查询,它允许我使用返回结果的表单来处理对所选行的更新。我收到的警告出现在我代码的第36行。我以为我正确地设置了代码来构建表,然后填充它,但是我找不到我的错误。我看到了这个问题的几个版本,但我没有看到一个是关于给定对象的。任何帮助都会受到欢迎 <html> <head> </head> <body> <?php $servername = "localhost"; $username = "xxx"; $passw

我正在尝试构建一个SELECT查询,它允许我使用返回结果的表单来处理对所选行的更新。我收到的警告出现在我代码的第36行。我以为我正确地设置了代码来构建表,然后填充它,但是我找不到我的错误。我看到了这个问题的几个版本,但我没有看到一个是关于给定对象的。任何帮助都会受到欢迎

<html>
<head>
</head>
<body>
<?php
$servername = "localhost";
$username = "xxx";
$password = "xxx";
$dbname = "oldga740_SeniorProject";
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
     die("Connection failed: " . $conn->connect_error);
}
$sql = "SELECT * FROM Projects";
$result = $conn->query($sql);
echo "<table border=1>
<tr>
<th>Project</th>
<th>Client</th>
<th>Last Name</th>
<th>Date Received</th>
<th>Final Review Date</th>
<th>Date Delivered</th>
<th>Date Accepted>
</tr>";
while($record = mysql_fetch_array($result))
{
if ($result->num_rows > 0){
echo "<form action=mynewform.php method=post>";
echo "<tr>"; 
echo "<td>" . "<input type=text name=project value=" . $record['Project'] . " </td>";
echo "<td>" . "<input type=text name=client value=" . $record['Client'] . " </td>";
echo "<td>" . "<input type=text name=lastname value=" . $record['LastName'] . " </td>";
echo "<td>" . "<input type=text name=datereceived value=" . $record['DateReceived'] . " </td>";
echo "<td>" . "<input type=text name=finalreview date value=" . $record['FinalReviewDate'] . " </td>";
echo "<td>" . "<input type=text name=datedelivered value=" . $record['DateDelivered'] . " </td>";
echo "<td>" . "<input type=text name=dateaqccepted value=" . $record['DateAccepted'] . " </td>";
echo "<td>" . "<input type=hidden name=hidden value=" . $record['Project'] . " </td>";
echo "<td>" . "<input type=submit name=update value=update" . " </td>";
echo "<td>" . "<input type=submit name=delete value=delete" . " </td>";
echo "</tr>";
echo "</form>";
}
}
echo "</table>";
if (isset($_POST[update])){
$UpdateQuery = "UPDATE Projects SET Project='$_POST[project]', Client='$_POST[client]', LastName='$_POST[lastname]', DateReceived='$_POST[datereceived]', FinalReviewDate='$_POST[finalreviewdate]', DateDelivered='$_POST[datedelivered]', DateAccepted='$_POST[dateaccepted]' WHERE Project='$_POST[hidden]";
mysql_query($UpdateQuery, $con);
}; 
?>
<?php
    $connection->close();
?>
</body>
</html>
编辑代码

<html>

<head>

</head>

<body>

<?php
$servername = "localhost";
$username = "xxx";
$password = "xxx";
$dbname = "oldga740_SeniorProject";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
     die("Connection failed: " . $conn->connect_error);
}

$sql = "SELECT * FROM Projects";
$result = $conn->query($sql);

echo "<table border=1>
<tr>
<th>Project</th>
<th>Client</th>
<th>Last Name</th>
<th>Date Received</th>
<th>Final Review Date</th>
<th>Date Delivered</th>
<th>Date Accepted</th>
</tr>";

while($record = mysqli_fetch_array($result))
{
if ($result->num_rows > 0){

echo "<form action='mynewform'.php method='post'>";
echo "<tr>"; 
echo "<td>" . "<input type='text' name='project' value='" . $record['Project'] . " </td>";
echo "<td>" . "<input type='text' name='client' value='" . $record['Client'] . " </td>";
echo "<td>" . "<input type='text' name='lastname' value='" . $record['LastName'] . " </td>";
echo "<td>" . "<input type='text' name='datereceived' value='" . $record['DateReceived'] . " </td>";
echo "<td>" . "<input type='text' name='finalreviewdate' value='" . $record['FinalReviewDate'] . " </td>";
echo "<td>" . "<input type='text' name='datedelivered' value='" . $record['DateDelivered'] . " </td>";
echo "<td>" . "<input type='text' name='dateaccepted' value='" . $record['DateAccepted'] . " </td>";
echo "<td>" . "<input type='hidden' name='hidden' value='" . $record['Project'] . " </td>";
echo "<td>" . "<input type='submit' name='update' value=update'" . " </td>";
echo "<td>" . "<input type='submit' name='delete' value=delete'" . " </td>";
echo "</tr>";
echo "</form>";
}
}
echo "</table>";

if (isset($_POST['update'])){
$UpdateQuery = "UPDATE Projects SET Project='$_POST[project]', Client='$_POST[client]', LastName='$_POST[lastname]', DateReceived='$_POST[datereceived]', FinalReviewDate='$_POST[finalreviewdate]', DateDelivered='$_POST[datedelivered]', DateAccepted='$_POST[dateaccepted]' WHERE Project='$_POST[hidden]";
mysqli_query($conn, $sql);
}; 

?>

<?php
    $conn->close();
?>

</body>

</html>
第二次编辑

<html>

<head>

</head>

<body>

<?php
$servername = "localhost";
$username = "xxx";
$password = "xxx";
$dbname = "oldga740_SeniorProject";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
     die("Connection failed: " . $conn->connect_error);
}

$sql = "SELECT * FROM Projects";
$result = $conn->query($sql);

echo "<table border=1>
<tr>
<th>Project</th>
<th>Client</th>
<th>Last Name</th>
<th>Date Received</th>
<th>Final Review Date</th>
<th>Date Delivered</th>
<th>Date Accepted</th>
</tr>";

while($record = mysqli_fetch_array($result))
{
if ($result->num_rows > 0){

echo "<form action='mynewform.php' method='post'>";
echo "<tr>"; 
echo "<td>" . "<input type='text' name='project' value='" . $record['Project'] . "' /></td>";
echo "<td>" . "<input type='text' name='client' value='" . $record['Client'] . "'/></td>";
echo "<td>" . "<input type='text' name='lastname' value='" . $record['LastName'] . "' /></td>";
echo "<td>" . "<input type='text' name='datereceived' value='" . $record['DateReceived'] . "' /></td>";
echo "<td>" . "<input type='text' name='finalreviewdate' value='" . $record['FinalReviewDate'] . "' /></td>";
echo "<td>" . "<input type='text' name='datedelivered' value='" . $record['DateDelivered'] . "' /></td>";
echo "<td>" . "<input type='text' name='dateaccepted' value='" . $record['DateAccepted'] . "' /></td>";
echo "<td>" . "<input type='hidden' name='hidden' value='" . $record['Project'] . "' /></td>";
echo "<td>" . "<input type='submit' name='update' value=update'" . "' /></td>";
echo "<td>" . "<input type='submit' name='delete' value=delete'" . "' /></td>";
echo "</tr>";
echo "</form>";
}
}
echo "</table>";

if (isset($_POST['update'])){
$UpdateQuery = "UPDATE Projects SET Project='$_POST[project]', Client='$_POST[client]', LastName='$_POST[lastname]', DateReceived='$_POST[datereceived]', FinalReviewDate='$_POST[finalreviewdate]', DateDelivered='$_POST[datedelivered]', DateAccepted='$_POST[dateaccepted]' WHERE Project='$_POST[hidden]";
mysqli_query($conn, $sql);
}; 

?>

<?php
    $conn->close();
?>

</body>

</html>
将mysql\u fetch\u数组$result更改为$result->fetch\u数组

你不能对mysql和mysqli进行merrage


您使用mysqli_389;连接MYSQL,当您想要得到结果时,仍然需要mysqli_389;

这是官方提供的样本:

`$mysqli = new mysqli("localhost", "my_user", "my_password", "world");
/* check connection */
if ($mysqli->connect_errno){
    printf("Connect failed: %s\n", $mysqli->connect_error);
    exit();
}
$sql = "SELECT a.uid, a.role AS roleid, b.role,FROM tbl_usr a INNER JOIN tbl_memrole b ON a.role = b.id  ";
    if ($result = $mysqli->query($sql)) { 
        while($obj = $result->fetch_object()){ 
            $line.=$obj->uid; 
            $line.=$obj->role; 
            $line.=$obj->roleid; 
        }
    }
    $result->close(); 
    unset($obj); 
    unset($sql); 
    unset($query);`

除了评论中前面的注释之外。我还没有看到关于HTML元素的任何其他答案/注释,因此我将在这些元素上添加答案

使用此PHP生成的HTML将无效。属性需要被引用,输入元素需要被关闭

例如,您当前的代码

echo "<form action=mynewform.php method=post>";
echo "<tr>"; 
echo "<td>" . "<input type=text name=project value=" . $record['Project'] . " </td>";
应该给你什么

<form action='mynewform.php' method='post'>
<tr>
<td><input type='text' name='project' value='what ever projects value is' /></td>
请注意,第二个示例中的语法突出显示与第一个示例中的不同

另外,请看一看,或一个不太安全的方法,但比你目前拥有的更好

有关整个主题的更多信息,请参见:a b c

更新:

以下是我从SQL注入孔中提取的结构:

<?php
$servername = "localhost";
$username = "xxx";
$password = "xxx";
$dbname = "oldga740_SeniorProject";
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}
if (isset($_POST['update'])){
    $UpdateQuery = "UPDATE Projects SET Project='$_POST[project]', Client='$_POST[client]', LastName='$_POST[lastname]', DateReceived='$_POST[datereceived]', FinalReviewDate='$_POST[finalreviewdate]', DateDelivered='$_POST[datedelivered]', DateAccepted='$_POST[dateaccepted]' WHERE Project='$_POST[hidden]";
    mysqli_query($conn, $sql);
}
$sql = "SELECT * FROM Projects";
$result = $conn->query($sql);
?>
<html>
    <head>
    </head>
    <body>
        <table border='1'>
            <tr>
                <th>Project</th>
                <th>Client</th>
                <th>Last Name</th>
                <th>Date Received</th>
                <th>Final Review Date</th>
                <th>Date Delivered</th>
                <th>Date Accepted</th>
            </tr>
<?php
if ($result->num_rows > 0){
     while($record = mysqli_fetch_array($result)) {?>
            <form action='mynewform.php' method='post'>
                <tr>
                    <td><input type='text' name='project' value='<?php echo $record['Project'];?>' /></td>
                    <td><input type='text' name='client' value='<?php echo $record['Client'];?>'/></td>
                    <td><input type='text' name='lastname' value='<?php echo $record['LastName'];?>' /></td>
                    <td><input type='text' name='datereceived' value='<?php echo $record['DateReceived'];?>' /></td>
                    <td><input type='text' name='finalreviewdate' value='<?php echo $record['FinalReviewDate'];?>' /></td>
                    <td><input type='text' name='datedelivered' value='<?php $record['DateDelivered'];?>' /></td>
                    <td><input type='text' name='dateaccepted' value='<?php echo $record['DateAccepted'];?>' /></td>
                    <td><input type='hidden' name='hidden' value='<?php echo $record['Project'];?>' /></td>
                    <td><input type='submit' name='update' value='update' /></td>
                    <td><input type='submit' name='delete' value='delete' /></td>
                </tr>
            </form>
<?php
    }
}
$conn->close();
?>
        </table>
    </body>
</html>

你有一些错误。一个是你把mysql驱动程序和mysqli混合在一起。另一个原因是$connection未定义。您还可以接受SQL注入。a mysql_fetch_数组b mysql_query另外,您的HTML元素无效,您缺少结束标记,您的属性应该被引用。这不是当前的问题,但一旦您得到SQL处理,就会出现。是的,这是我提到的第一个错误;您正在将mysql_uDriver与mysqli混合,因此$result是一个mysqli结果对象;mysql_uu函数无法与之配合使用。看看。$result是一个mysqli查询,所以当$record=mysql\u fetch\u array$result时,不能在中使用mysql\u fetch\u array$result。在$record=$result->fetch_arrayYou需要引用键时尝试,否则php将假定它们是常量。因此,将if-isset$\u POST[update]{更改为if-isset$\u POST['update']{ie.'update'将if$result->num_rows>0移到while$record=$result->fetch_array.Chris之外会更有意义。感谢您的额外输入。我正开始研究为什么我的表单在看到此评论时没有生成任何结果。我知道您的意图,但当我进行更改时,表没有呈现正确。您可以更新您的问题以显示您所做的更改吗?您错过了结束输入元素。请参阅。'/>在我的答案中。vs yours;。好的,表单回来了,但我显示在更新和删除按钮中,它仍然不会向更新查询传递任何内容。我感谢您为解决此问题所提供的所有帮助,但我不希望你不能花一整天的时间来帮我解决这个问题。请用你更新的代码更新这个问题。你的更新查询无效。你缺少“WHERE Project=”的结尾$\u POST[hidden]。这仍然对SQL注入开放。我看不出您在哪里使用删除。您应该在这些查询和页面本身上使用错误报告。
echo "<form action='mynewform.php' method='post'>";
echo "<tr>"; 
echo "<td>" . "<input type='text' name='project' value='" . $record['Project'] . "' /> </td>";
<form action='mynewform.php' method='post'>
<tr>
<td><input type='text' name='project' value='what ever projects value is' /></td>
<?php
$servername = "localhost";
$username = "xxx";
$password = "xxx";
$dbname = "oldga740_SeniorProject";
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}
if (isset($_POST['update'])){
    $UpdateQuery = "UPDATE Projects SET Project='$_POST[project]', Client='$_POST[client]', LastName='$_POST[lastname]', DateReceived='$_POST[datereceived]', FinalReviewDate='$_POST[finalreviewdate]', DateDelivered='$_POST[datedelivered]', DateAccepted='$_POST[dateaccepted]' WHERE Project='$_POST[hidden]";
    mysqli_query($conn, $sql);
}
$sql = "SELECT * FROM Projects";
$result = $conn->query($sql);
?>
<html>
    <head>
    </head>
    <body>
        <table border='1'>
            <tr>
                <th>Project</th>
                <th>Client</th>
                <th>Last Name</th>
                <th>Date Received</th>
                <th>Final Review Date</th>
                <th>Date Delivered</th>
                <th>Date Accepted</th>
            </tr>
<?php
if ($result->num_rows > 0){
     while($record = mysqli_fetch_array($result)) {?>
            <form action='mynewform.php' method='post'>
                <tr>
                    <td><input type='text' name='project' value='<?php echo $record['Project'];?>' /></td>
                    <td><input type='text' name='client' value='<?php echo $record['Client'];?>'/></td>
                    <td><input type='text' name='lastname' value='<?php echo $record['LastName'];?>' /></td>
                    <td><input type='text' name='datereceived' value='<?php echo $record['DateReceived'];?>' /></td>
                    <td><input type='text' name='finalreviewdate' value='<?php echo $record['FinalReviewDate'];?>' /></td>
                    <td><input type='text' name='datedelivered' value='<?php $record['DateDelivered'];?>' /></td>
                    <td><input type='text' name='dateaccepted' value='<?php echo $record['DateAccepted'];?>' /></td>
                    <td><input type='hidden' name='hidden' value='<?php echo $record['Project'];?>' /></td>
                    <td><input type='submit' name='update' value='update' /></td>
                    <td><input type='submit' name='delete' value='delete' /></td>
                </tr>
            </form>
<?php
    }
}
$conn->close();
?>
        </table>
    </body>
</html>