Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/249.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
每当字符串值被转换时,它就被更改为1-PHP_Php_Mysql_String_Integer - Fatal编程技术网

每当字符串值被转换时,它就被更改为1-PHP

每当字符串值被转换时,它就被更改为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

我无法将字符串值转换为num值。这似乎只是$rows变量的一个问题,因为我曾尝试将一个整数存储在一个类似:$s=“2”的字符串中,并且能够将其转换为正确的整数,没有问题

       //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']
请注意上面其他人所说的话,他们都是很好的评论。