每当字符串值被转换时,它就被更改为1-PHP
我无法将字符串值转换为num值。这似乎只是$rows变量的一个问题,因为我曾尝试将一个整数存储在一个类似:$s=“2”的字符串中,并且能够将其转换为正确的整数,没有问题每当字符串值被转换时,它就被更改为1-PHP,php,mysql,string,integer,Php,Mysql,String,Integer,我无法将字符串值转换为num值。这似乎只是$rows变量的一个问题,因为我曾尝试将一个整数存储在一个类似:$s=“2”的字符串中,并且能够将其转换为正确的整数,没有问题 //Where email input is being grabbed $sanemail=mysqli_real_escape_string($con, $_POST['email']); //User_id is being grabbed
//Where email input is being grabbed
$sanemail=mysqli_real_escape_string($con, $_POST['email']);
//User_id is being grabbed
$sql8="SELECT user_id FROM users WHERE email='".$sanemail."'";
$result=mysqli_query($con,$sql8);
$rows=mysqli_fetch_assoc($result);
$user_id=(int)$rows;
var_dump($rows);
var_dump($user_id);
var_dump($rows)返回“2”,出于某种原因,var_dump($user_id)返回1。即使$rows=“3”也会发生这种情况
有人知道问题出在哪里吗?
mysqli\u fetch\u assoc
返回查询结果的数组。可以找到解释。当您尝试将数组转换为int时,它将有未定义的结果,如中所示。本质上,它将返回1,因为数组不是空的
更改行:
$user\u id=(int)$rows代码>
to$user\u id=(int)$rows['user\u id']
获取整数值而不是数组警告:使用mysqli
时,应使用and将用户数据添加到查询中。不要使用手动转义和字符串插值或串联来完成此操作,因为这样会创建严重的错误。意外未扫描的数据是一个严重的风险。使用绑定参数不会太冗长,也更容易检查是否正确。注意:请尝试摆脱在一次性变量中声明SQL语句的习惯,这些语句只使用一次。如果查询直接提供给函数,那么遵循代码就容易多了,而且不再有可能弄乱并发送$sql3
,而不是视觉上相似的$sql8
。注意:mysqli
的面向对象界面明显不那么冗长,使代码更易于阅读和审核,并且不容易与过时的mysql\u查询
接口混淆。在你对程序性风格投入太多之前,值得换一种。示例:$db=new mysqli(…)
和$db->prepare(“…”)
过程接口是引入mysqli
API时PHP4时代的产物,不应在新代码中使用。为什么要将数组转换为int?只是想知道。试试$user\u id=(int)$rows['user\u id']
请注意上面其他人所说的话,他们都是很好的评论。