2017-10-13 60 views
1

我不是很懂PHP的人。我目前的主机从PHP 5切换到7,我的用户在线脚本无法正常工作。它通过PHP和MySQL工作,创建一个表并在10分钟后删除它。用户在线脚本PHP7兼容

任何人都可以帮助使这个PHP 7兼容吗?

这是基本的代码是什么:(!2013年6月)

CREATE TABLE `user_online` (
`session` char(100) NOT NULL default '', 
`time` int(11) NOT NULL default '0' 
) ENGINE=MyISAM; 

<?php 

session_start(); 
$session=session_id(); 
$time=time(); 
$time_check=$time-600; //SET TIME 10 Minute 

$host="localhost"; // Host name 
$username=""; // Mysql username 
$password=""; // Mysql password 
$db_name="test"; // Database name 
$tbl_name="user_online"; // Table name 

// Connect to server and select databse 
mysql_connect("$host", "$username", "$password")or die("cannot connect to server"); 
mysql_select_db("$db_name")or die("cannot select DB"); 

$sql="SELECT * FROM $tbl_name WHERE session='$session'"; 
$result=mysql_query($sql); 

$count=mysql_num_rows($result); 

if($count=="0"){ 

$sql1="INSERT INTO $tbl_name(session, time)VALUES('$session', '$time')"; 
$result1=mysql_query($sql1); 
} 

else { 
"$sql2=UPDATE $tbl_name SET time='$time' WHERE session = '$session'"; 
$result2=mysql_query($sql2); 
} 

$sql3="SELECT * FROM $tbl_name"; 
$result3=mysql_query($sql3); 

$count_user_online=mysql_num_rows($result3); 

echo "User online : $count_user_online "; 

// if over 10 minute, delete session 
$sql4="DELETE FROM $tbl_name WHERE time<$time_check"; 
$result4=mysql_query($sql4); 

// Open multiple browser page for result 


// Close connection 

mysql_close(); 
?> 

回答

0

您的代码不工作,因为mysql引伸去除从PHP 7.已,因为PHP 5.5弃用

建议使用mysqli或PDO_MySQL扩展。不推荐使用旧的MySQL扩展新的发展,因为它是在PHP 5.5.0过时,在PHP 7

移除你可以看到你在the manual拥有的各种选择。

基本上有两个选项,PHP Data Objects (PDO)MySQL Improved (mysqli)。两者都支持prepared statements,这将允许您开发virtually SQL注入免费应用程序。

如果您需要保持程序风格,那么由于PDO仅面向对象,所以您坚持使用mysqli

除此之外,无论你选择哪一方面都主要是选择。在我从手册链接的页面中,您可以在功能比较中找到非常好的对照表。

所有三个扩展的总体性能被认为是大致相同的。尽管扩展的性能仅占PHP Web请求总运行时间的一小部分。通常,影响低至0.1%。