我正在尝试从查询中保存一些值:
$query = mysqli_query($conex, "SELECT * FROM acceso WHERE usuario = '$user' AND contrasenia = '$pass'");
if (mysqli_num_rows($query) > 0)// mysqli_num_rows > 0
{
$fila = mysql_fetch_assoc($query)
$_SESSION["id_usuario_cms"] = $fila ['idacces'];
$_SESSION["usuario_cms"] = $fila ['user'];
echo '<script>location.href = "admin/index.php"</script>';
}
但它不起作用。有什么想法吗?
答案 0 :(得分:2)
我看到一个潜在的问题和一个明显的问题。
如果您已经开始会话,那么可能性很大。
session_start();
需要在所有使用会话的文件中使用;你的问题中没有提到这一点。如果它不属于您的文件,请添加它。
显而易见的是,您正在使用mysql_
函数与您显示的代码的其余部分混合使用mysqli_
。这些不同的功能不会相互混合。
mysql_fetch_assoc
必须是mysqli_
等效的mysqli_fetch_assoc
。
你应该使用mysqli_fetch_array
。
要使用mysqli_fetch_assoc
,应将其设置为while
循环。
手册中的示例:
/* fetch associative array */
while ($row = mysqli_fetch_assoc($result)) {
printf ("%s (%s)\n", $row["Name"], $row["CountryCode"]);
}
如果您想使用mysqli_fetch_array
:
手册中的示例:
/* associative array */
$row = mysqli_fetch_array($result, MYSQLI_ASSOC);
printf ("%s (%s)\n", $row["Name"], $row["CountryCode"]);
将error reporting添加到文件的顶部,这有助于查找错误。
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
// rest of your code
将or die(mysqli_error($conex))
包括在mysqli_query()
。
旁注:错误报告应仅在暂存时完成,而不是生产。
答案 1 :(得分:1)
你必须使用 mysqli_fetch_array($ query)也 session_start()
$query = mysqli_query($conex, "SELECT * FROM acceso WHERE usuario = '$user' AND contrasenia = '$pass'");
if (mysqli_num_rows($query) > 0)// mysqli_num_rows > 0
{
$fila = mysqli_fetch_array($query)
$_SESSION["id_usuario_cms"] = $fila ['idacces'];
$_SESSION["usuario_cms"] = $fila ['user'];
echo '<script>location.href = "admin/index.php"</script>';
}