【问题标题】:Trying to load variables into the database and it is not succeeding尝试将变量加载到数据库中,但没有成功
【发布时间】:2017-01-14 09:54:57
【问题描述】:

我有一小段代码将变量加载到数据库表中。

如您所见,$insertResult 未输出,因此它在 if 语句中失败,如果一切按计划进行,则不会:

它应该使用$topInsert 查询表并将变量加载到表主题中。

$topName = $_POST['topName'];
                $topCat = $_POST['topCat'];
                $loggedUser = $_SESSION['loggedUser'];

                echo $topCat;

                $userID = "SELECT ID FROM users WHERE username = '$loggedUser'";
                $getID = mysqli_query($connect, $userID);
                $rowID = mysqli_fetch_array($getID);
                $userID = $rowID['ID'];
                echo $userID;
                $topInsert = "INSERT INTO topics(topicSubject, topicDate, topicCat, topicBy) VALUES('$topName', NULL, '$topCat', '$userID')";
                $insertResult = mysqli_query($connect, $topInsert);


                if(!$insertResult){

                    echo "<p style='margin-top: 75px;'>Error: Data could not be loaded to the database. Please try again.</p>";
                    $sqlRoll = "ROLLBACK;";
                    $rollResult = mysqli_query($connect, $sqlRoll);
                }

到目前为止,我很确定表中的所有数据类型都与我尝试输入的内容正确对应,但无法确定哪些内容不能正常工作。

从昨天开始我一直在努力解决这个问题,并决定我需要一些帮助来确定哪部分代码失败了。

如果我遗漏了什么,请随时要求发布更多信息。

感谢任何回复。

【问题讨论】:

  • 您需要添加错误处理,方法是让 mysqli 抛出异常或在操作后直接检查错误消息。
  • 这个 API 的美妙之处在于它提供了参数化查询的使用。使用 th m!!
  • 你没有违反类型变量吗?您没有向我们展示 $topName、$topCat、$userID,并且由于 topCat 和 topBy 字段是 int 字段,您可能正在尝试将 String 分配给 int 字段。
  • 这是我为令人困惑的变量名称道歉的地方。 $topCat 是表中的 topicCat,是类别表中的类别 ID,它是一个整数。 $userID 是用户表中的用户 ID,也是一个整数。我可能应该在示例中包含更多代码。

标签: php mysqli insert


【解决方案1】:

设置 topicDate 列以允许 PHPADMIN 中的 NULL 值或不要在查询中放置 NULL

【讨论】:

  • 谢谢,这已经解决了。一旦我改变了它,它就直接进入下一个语句。
【解决方案2】:

试试这个。

$topName = $_POST['topName'];
$topCat = $_POST['topCat'];
$loggedUser = $_SESSION['loggedUser'];
echo $topCat;

//check if connection to database is succesfull first, then

$result = "SELECT ID FROM users WHERE username = '$loggedUser'";
if($result->num_rows >0){

while($row = $result->fetch_assoc()){
  $userID = $row["ID"];

}
}

$sql = "INSERT INTO topics(topicSubject, topicDate, topicCat, topicBy) VALUES('$topName', NULL, '$topCat', '$userID')";


    if(mysqli_query($con, $sql)){
        echo "Succesfully added"."<br>";
    }
    else{
        echo "Data could not be loaded"."<br>";

    }

    mysqli_close($connect);

【讨论】:

  • 对我来说,if*$result-&gt;num_rows &gt;0) 行返回为 注意:尝试在第 183 行获取 C:\xampp\htdocs\phpSiteTest\topCreate.php 中非对象的属性
  • 有没有试过在mysql sql命令行中执行SELECT语句,看看有没有返回结果?
  • @ixxCarbonxZZ 给我们:$result = "SELECT ID FROM users WHERE username = #loggedUser'"; print_r($result)
  • SELECT ID FROM users WHERE username = 'Admin'print_r($result) 的输出
猜你喜欢
  • 2012-11-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-19
  • 2020-10-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多