PHP 脚本在 WAMP 上执行但不在 linux 服务器上执行
PHP script executes on WAMP but not on linux server
我创建了一个脚本来处理我的电子邮件确认作为注册的最后一步。
用户单击 link 发送到他们电子邮件的内容。
link 由 http://domain.com/?register=somecode 构建
然后奇怪的是它可以在我的本地机器上运行,但不能在我的服务器上运行 (linux)。
我也试过切换 php.ini,但没有用。
提前致谢。
激活码:
(如你所见,我做了一些回声,我发现我的脚本在回声 3 后停止,所以我认为绑定不起作用)
if(isset($_GET['register'])){
//include "includes/functions/sql_functions.php";
include "PROPERTIES_ENG.php";
//$sql = new sql();
//activateAccount($_GET['register']);
$code = $_GET['register'];
$mysqli = new mysqli("****", "****", "****", "****");
echo "1 <br />";
if( $code && $stmt = $mysqli->prepare("SELECT * FROM USERS WHERE email_code =?")){
$stmt->bind_param( "s", $code );
echo "2";
$stmt->execute();
echo "3";
$stmt->bind_result($name, $surname, $email, $username, $password, $id, $ecode);
echo "4";
$stmt->fetch();
echo $name;
echo $id;
}
// Set activation to true
$val = "true";echo "10 <br />";
$mysqli = new mysqli("*****", "****", "****", "****");echo "11 <br />";
if(mysqli_connect_errno()){
printf("Connect failed: %s\n", mysqli_connect_error());echo "12 <br />";
exit();
}
if($stmt = $mysqli->prepare("INSERT INTO VALIDATION (USER_ID, VALIDATED) VALUES (?, ?)")){
$stmt->bind_param("ss", $id, $val);
if(!$stmt->execute()){
return $mysqli->error;
}
$stmt->close();
}else{
return $mysqli->error;
}
}
据我所知,bind_result()
函数不适用于使用通配符 (*) 的 SQL 查询。在您的情况下,您可以重构 SQL 查询传递列名而不是通配符,还是尝试使用 get_result()
函数。
有关更具描述性的示例,请查看此 answer。
我创建了一个脚本来处理我的电子邮件确认作为注册的最后一步。 用户单击 link 发送到他们电子邮件的内容。 link 由 http://domain.com/?register=somecode 构建 然后奇怪的是它可以在我的本地机器上运行,但不能在我的服务器上运行 (linux)。 我也试过切换 php.ini,但没有用。
提前致谢。
激活码: (如你所见,我做了一些回声,我发现我的脚本在回声 3 后停止,所以我认为绑定不起作用)
if(isset($_GET['register'])){
//include "includes/functions/sql_functions.php";
include "PROPERTIES_ENG.php";
//$sql = new sql();
//activateAccount($_GET['register']);
$code = $_GET['register'];
$mysqli = new mysqli("****", "****", "****", "****");
echo "1 <br />";
if( $code && $stmt = $mysqli->prepare("SELECT * FROM USERS WHERE email_code =?")){
$stmt->bind_param( "s", $code );
echo "2";
$stmt->execute();
echo "3";
$stmt->bind_result($name, $surname, $email, $username, $password, $id, $ecode);
echo "4";
$stmt->fetch();
echo $name;
echo $id;
}
// Set activation to true
$val = "true";echo "10 <br />";
$mysqli = new mysqli("*****", "****", "****", "****");echo "11 <br />";
if(mysqli_connect_errno()){
printf("Connect failed: %s\n", mysqli_connect_error());echo "12 <br />";
exit();
}
if($stmt = $mysqli->prepare("INSERT INTO VALIDATION (USER_ID, VALIDATED) VALUES (?, ?)")){
$stmt->bind_param("ss", $id, $val);
if(!$stmt->execute()){
return $mysqli->error;
}
$stmt->close();
}else{
return $mysqli->error;
}
}
据我所知,bind_result()
函数不适用于使用通配符 (*) 的 SQL 查询。在您的情况下,您可以重构 SQL 查询传递列名而不是通配符,还是尝试使用 get_result()
函数。
有关更具描述性的示例,请查看此 answer。