【问题标题】:What to use: sql==true vs sql===true?使用什么:sql==true vs sql===true?
【发布时间】:2018-02-18 11:37:06
【问题描述】:

请看这里;谢谢大家! 我正在尝试创建一个系统来升级我的游戏中的建筑物。我为所有建筑物设置了相同的升级 div。当玩家单击构建(div)时,运行一个函数以显示由 ajax 帖子填充的隐藏 div,其中包含升级成本。 div 的类“名称”(与 db 中的建筑物名称相同)被发送到 php 以获取所需的数据。直到现在它工作正常......我向一个按钮添加了一个点击事件,该按钮应该将 div 'name' 发送到另一个应该执行升级操作并在响应 ajax 字段中回显“正确”的 php 中。但是当我单击 btn 时,它没有显示日志错误... 错误:从 cost_cladiri WHERE building = 'camp_1' 中选择 ress1,ress2直接php,但同样的错误...... 这是我的 ajax 和我的 php

    function getbuild(e) {  
  $.ajax({
  type: 'post',
  url: '../account-handeling/get_cost_upgrade.php',
  data: {
  building: e.className,
},
  success: function (response){
   $('#display_cost').html(response); 
$("#increase").click(function(){  
    $.ajax({
  type: 'post',
  url: '../account-handeling/upgrade_handle.php',
  data: {
  building: e.className,
}, 
  success: function (response){
   $('#display_cost').html(response);
  }
});
})  
       }
    });
  }

upgrade_handle.php

if(!isset($_SESSION))
{
session_start();
}
$dbserver           = "localhost";
$dbusername         = "root";
$dbpassword         = "";
$db                 = "worlddomination";

$conn = mysqli_connect($dbserver,$dbusername,$dbpassword,$db);
if ($conn->connect_error) 
{
    die("No connection:".$conn->connect_error);
}

$username = $_SESSION['username'];
//$buildcost = $_POST['building'];

$sql    = "SELECT ress1,ress2 FROM cost_cladiri WHERE building = 'camp_1'";
$result = mysqli_query($conn,$sql);
$row = mysqli_fetch_assoc($result);
$ress1 = $row['ress1'];
$ress2 = $row['ress2'];
if($conn->query($sql) === TRUE){
    echo "$ress1";
}
else{
    echo "Error: ".$sql."<br/>".$conn->error;
}

我做错了什么?谢谢!!!

【问题讨论】:

  • 如果你取出 AJAX 并执行你会得到同样的行为吗?
  • 我尝试访问 php 直接链接,使用 camp_1 修改变量。我认为我的 sql 有问题,但我的“一直在工作”的 sql 表达式... PS。在访问 php.ini 之前,我还没有尝试删除会话 cookie。我回家时会试试的。 ty

标签: javascript php jquery html ajax


【解决方案1】:

对于select查询Mysqli::query方法将返回mysqli_result对象,所以它可能是== true它不会是=== true

失败时返回 FALSE。对于成功的 SELECT、SHOW、DESCRIBE 或 EXPLAIN 查询,mysqli_query() 将返回一个 mysqli_result 对象。对于其他成功的查询,mysqli_query() 将返回 TRUE。

我会尝试检查它是!== false 还是instanceof mysqli_result

编辑:同样的事情你也查询了两次,一次是面向对象的,一次是程序的。

【讨论】:

  • 对不起,我没有很好地处理这些条款。你能解释一下,我在哪里查询了同样的东西 2 次?
  • 一个是$result = mysqli_query($conn,$sql),是过程式的,另一个是if里面的$conn-&gt;query($sql),是面向对象的。您可以在if 内部的过程中使用$result,而不是再次查询。
  • 当我在电脑上时,我会尝试应用您的建议,我会返回结果。谢谢你,先生!
  • 有效!!!感谢您的干预和帮助!这是我修改的代码:请告诉我是否正确: if($row = mysqli_fetch_assoc($result)){ $ress1 = $row['ress1']; $ress2 = $row['ress2'];回声“$ress1”;}
  • 你应该没问题,只是那些在回显时围绕变量的引号,它们是不必要的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-01-23
  • 2013-02-02
  • 2016-09-17
  • 1970-01-01
  • 2017-07-29
  • 2013-12-23
相关资源
最近更新 更多