【发布时间】: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,也是一个整数。我可能应该在示例中包含更多代码。