三元运算符(内联 "if statement")从 MySQL 到 MySQLi 的转换?
Ternary Operator (in-line "if statement") conversion from MySQL to MySQLi?
我的登录脚本快完成了,只是需要帮助寻找替代方法:
return (mysql_result($query, 0) == 1) ? true : false;
查询:
$query = mysqli_query($link, "SELECT COUNT 'id' FROM 'user_login_details' WHERE 'username' = '$username' AND 'password' = '$password'");
此查询旨在搜索归因于用户输入的 $password 和 $username 的用户 ID。
三元运算符语句基本上说,"return" "true" 如果记录的 "id" 用户的用户名和密码是“==1”。通过使用 mysql_result 的第二个参数检查行号,基本上确保记录存在并且详细信息实际存在于数据库中。这是我的第一条记录,所以数字将是 0。
$link
我发现从 mysqli 开始,现在每个查询都需要数据库 link 连接(有点奇怪,因为它使事情变得复杂)但主要问题是 mysqli_result 没有它不存在,所以我需要找到一个内置函数(或自己构建一个)来检查查询结果 (id) 的行号并检查它是否等于 1。
我基本上希望能够这样写:
return (mysqli_result($query, 0) == 1) ? true : false;
如有帮助将不胜感激,
汤姆
你基本上想要的是:
function sqlResult($q, $count) {
if (!$q)
return false;
if ($arr = mysqli_fetch_array($q) && $count < count($arr)) {
return $arr[$count];
} else {
return false;
}
}
然而,如果我没记错的话,你仍然需要逃避你的username/password,否则注入仍然是可能的。
参见 http://php.net/manual/en/mysqli.real-escape-string.php
mysql_result
的完美替代品:
function mysqli_result($res, $row=0, $col=0)
{
$numrows = mysqli_num_rows($res);
if ($numrows && $row <= ($numrows-1) && $row >=0){
mysqli_data_seek($res,$row);
$resrow = (is_numeric($col)) ? mysqli_fetch_row($res) : mysqli_fetch_assoc($res);
if (isset($resrow[$col])) return $resrow[$col];
}
return false;
}
这个呢? (未测试)
return (mysqli_fetch_row($query)[0] == 1) ? true : false
注意:PHP函数数组解引用需要 5.4.0 或更高版本
我的登录脚本快完成了,只是需要帮助寻找替代方法:
return (mysql_result($query, 0) == 1) ? true : false;
查询:
$query = mysqli_query($link, "SELECT COUNT 'id' FROM 'user_login_details' WHERE 'username' = '$username' AND 'password' = '$password'");
此查询旨在搜索归因于用户输入的 $password 和 $username 的用户 ID。
三元运算符语句基本上说,"return" "true" 如果记录的 "id" 用户的用户名和密码是“==1”。通过使用 mysql_result 的第二个参数检查行号,基本上确保记录存在并且详细信息实际存在于数据库中。这是我的第一条记录,所以数字将是 0。
$link
我发现从 mysqli 开始,现在每个查询都需要数据库 link 连接(有点奇怪,因为它使事情变得复杂)但主要问题是 mysqli_result 没有它不存在,所以我需要找到一个内置函数(或自己构建一个)来检查查询结果 (id) 的行号并检查它是否等于 1。
我基本上希望能够这样写:
return (mysqli_result($query, 0) == 1) ? true : false;
如有帮助将不胜感激,
汤姆
你基本上想要的是:
function sqlResult($q, $count) {
if (!$q)
return false;
if ($arr = mysqli_fetch_array($q) && $count < count($arr)) {
return $arr[$count];
} else {
return false;
}
}
然而,如果我没记错的话,你仍然需要逃避你的username/password,否则注入仍然是可能的。 参见 http://php.net/manual/en/mysqli.real-escape-string.php
mysql_result
的完美替代品:
function mysqli_result($res, $row=0, $col=0)
{
$numrows = mysqli_num_rows($res);
if ($numrows && $row <= ($numrows-1) && $row >=0){
mysqli_data_seek($res,$row);
$resrow = (is_numeric($col)) ? mysqli_fetch_row($res) : mysqli_fetch_assoc($res);
if (isset($resrow[$col])) return $resrow[$col];
}
return false;
}
这个呢? (未测试)
return (mysqli_fetch_row($query)[0] == 1) ? true : false
注意:PHP函数数组解引用需要 5.4.0 或更高版本