【问题标题】:mysql to check if value is more than 0mysql 检查值是否大于0
【发布时间】:2014-06-03 17:12:32
【问题描述】:

这是我的代码。实际上它运行没有错误,但它总是进入第一个条件,即使 mysql 中的值大于 0 例如是 10。

<?php
session_start();
$loginuser = $_SESSION['result'];
$con=mysqli_connect("localhost","root","","leavecalendar");
// Check connection
if (mysqli_connect_errno())
 {
 echo "Failed to connect to MySQL: " . mysqli_connect_error();
 }
$sql="SELECT leavecount from employee WHERE username = $loginuser[username]";
$resource = mysql_query($sql);
if ($resource == 0) {
echo "ajsdjsdasjd";   <----always enters here
 }
else
{
header("insert.php");
} 

mysqli_close($con);
?>

【问题讨论】:

  • 你不能使用mysql_querymysqli,你必须使用mysqli_query
  • 另外,这将失败WHERE username = $loginuser[username]";
  • 你的查询也有错误(字符串需要加引号)
  • 查询后,你必须调用mysqli_fetch_assoc()(或其他mysqli_fetch函数之一)来获取结果行; $resource 不包含数据。
  • @Fred-ii- 我的印象是,对于 mysqli_connect("localhost","root","","leavecalendar");echo "Failed to connect to MySQL: " . mysqli_connect_error();WHERE username = $loginuser[username] 这样的 gem,这不是生产代码。或者,至少,我真的,真的希望不会。希望这家伙不是在写银行软件,否则我们就完蛋了。

标签: php mysql


【解决方案1】:

首先,您正在混合 api。不要混用 mysqli_*mysql_*。坚持使用mysqli_*

$con = mysqli_connect("localhost","root","","leavecalendar"); // mysqli
$resource = mysql_query($sql); // mysql

其次,由于您现在使用的是mysqli_*,因此只需使用准备好的语句。

$sql="SELECT leavecount from employee WHERE username = $loginuser[username]";

第三,不要将结果集与零进行比较,而是检查结果返回了多少行。

$resource = mysqli_query($con, $sql);
if ($resource == 0) {

考虑这个例子:

session_start();
if(isset($_SESSION['result'])) {
    $mysqli = mysqli_connect("localhost","root","","leavecalendar");
    $loginuser = $_SESSION['result'];
    $stmt = $mysqli->prepare("SELECT leavecount from employee WHERE username = ?");
    $stmt->bind_param("s", $loginuser);
    $stmt->execute();

    if($stmt->num_rows > 0) {
        // if it has results
        header("Location: insert.php");
    } else {
        // if it has NO results
    }
} 

【讨论】:

    【解决方案2】:
    • 问题

    1)你不能用

    mysql_query($query)
    

    对于mysqli

    2)

    "SELECT leavecount from employee WHERE username = $loginuser[username]"
    

    用户名应该是单引号或双引号。 例如:"SELECT leavecount from employee WHERE username = 'dineshrawat'";

    • 解决方案

      <?php
      session_start();
      $loginuser = $_SESSION['result'];
      $con=mysqli_connect("localhost","root","","leavecalendar");
      // Check connection
      if (mysqli_connect_errno())
       {
       echo "Failed to connect to MySQL: " . mysqli_connect_error();
       }
      $sql="SELECT leavecount from employee WHERE username = $loginuser[username]";
      $resource = mysqli_query($con, $sql);
      
      if ($resource == 0) { // If there is no record in result set
      echo "No record found";
       }
      else
      {
      header("insert.php");
      } 
      
      mysqli_close($con);
      ?>
      

    【讨论】:

      猜你喜欢
      • 2013-05-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-13
      • 2012-04-30
      • 1970-01-01
      相关资源
      最近更新 更多