Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用PHP从表中删除时出现mySQL错误_Php_Mysql_Mysqli - Fatal编程技术网

使用PHP从表中删除时出现mySQL错误

使用PHP从表中删除时出现mySQL错误,php,mysql,mysqli,Php,Mysql,Mysqli,我的PHP中的mySQL有一个问题,每次我尝试删除表中的一个条目时,它都会删除,但会输出一个错误。错误如下: 警告:mysqli_query()[function.mysqli query]:无法获取mysqli 警告:mysqli_num_rows()要求参数1为mysqli_结果, 空给定 警告:mysqli_close()[function.mysqli close]:无法获取mysqli 我似乎不明白为什么会发生这种情况,这可能很简单,但我对mySQL还比较陌生,所以希望有更高级的人能告

我的PHP中的mySQL有一个问题,每次我尝试删除表中的一个条目时,它都会删除,但会输出一个错误。错误如下:

警告:mysqli_query()[function.mysqli query]:无法获取mysqli

警告:mysqli_num_rows()要求参数1为mysqli_结果, 空给定

警告:mysqli_close()[function.mysqli close]:无法获取mysqli

我似乎不明白为什么会发生这种情况,这可能很简单,但我对mySQL还比较陌生,所以希望有更高级的人能告诉我哪里出了问题

<?
if(isset($_GET['deleteTweet'])) {
    $deleteTweet = $_GET['deleteTweet'];

    $sql = "DELETE FROM bestTweets WHERE id=".$deleteTweet;

    if (mysqli_query($conn, $sql)) {
        echo "Record deleted successfully";
    } else {
        echo "Error deleting record: " . mysqli_error($conn);
    }
    mysqli_close($conn);
}

$sql = "SELECT id, tName, tUsername, tTimeDate, tBody FROM bestTweets";
$result = mysqli_query($conn, $sql);

$onMouseOver = 'onmouseover="this.src='."'IMAGES/binBtn_Hover.svg'".'" ';
$onMouseOut = 'onmouseout="this.src='."'IMAGES/binBtn.svg'".'"';

if (mysqli_num_rows($result) > 0) {
    // output data of each row
    while($row = mysqli_fetch_assoc($result)) {
        echo 
        '<div id="tweetContainer" class="tweetContainer">
            <div id="tweetMain">
                <div id="tweetName">
                    <p>'.$row['tName'].'</p>
                </div>'.

                '<div id="tweetUsername">
                    <p>'.$row['tUsername'].'</p>
                </div>'.

                '<div id="tweetDateTime">
                    <p>' .$row['tTimeDate'].'</p>
                </div>'.

                '<div id="tweetBody">
                    <p>'.$row["tBody"].'</p>
                </div>
                <div id="tweetSave">
                    <form action="Saved.php?isset=true&deleteTweet='.$row["id"].'" method="post">
                        <button type="submit"  name="binBtn1" class="saveBtn"><img src="IMAGES/binBtn.svg"'.$onMouseOver.$onMouseOut.' width="50px" height="50px"></button>
                    </form>
                </div>
            </div>
        </div>';}
    }
    else {
        echo "0 results";
    }
mysqli_close($conn);
?>

如果删除一行,最后要做的就是关闭连接

改成

<?
if(isset($_GET['deleteTweet'])) {
    $deleteTweet = $_GET['deleteTweet'];

    $sql = "DELETE FROM bestTweets WHERE id=".$deleteTweet;

    if (mysqli_query($conn, $sql)) {
        echo "Record deleted successfully";
    } else {
        echo "Error deleting record: " . mysqli_error($conn);
    }
    //mysqli_close($conn);
}
两条建议:

  • 检查您是否已成功建立连接(因为我在您的代码中找不到
    $con
  • 确保没有过早关闭连接
    您是否将
    $conn
    定义为连接?你为什么要关闭mysqli_($conn)
  • 在完成查询之前?您的代码易受SQL注入攻击,您应该将mysqli与一起使用。此外,他应该检查
    $conn
    是否为mysqli连接。如果打开连接失败,IIRC
    mysqli_open(…)
    将返回
    NULL
    。我做了很多假设-连接可以用于删除,因此是可以的,OP将在某个时候更改为使用准备好的语句。但就目前而言,这至少应该表明问题所在。确实,有改进的余地,但你的答案指向了主要问题。