PHP代码的某些部分未执行
嗨,我的PHP脚本面临一个独特的问题。这是我的代码。执行PHP代码的某些部分未执行,php,javascript,html,Php,Javascript,Html,嗨,我的PHP脚本面临一个独特的问题。这是我的代码。执行writeToDB()后,我看不到回声(“top.location.href=www.facebook.com”) 有人能告诉我为什么我的脚本在写入db后停止执行吗 <?php function writeToDB($access_token,$uid,$username,$birthday,$gender,$age) { /* Database Connection */ $user = "xxxx"; $p
writeToDB()
后,我看不到回声(“top.location.href=www.facebook.com”)代码>
有人能告诉我为什么我的脚本在写入db后停止执行吗
<?php
function writeToDB($access_token,$uid,$username,$birthday,$gender,$age)
{
/* Database Connection */
$user = "xxxx";
$password = "xxxx";
$host = "xxxxxxxxxxxxxxxxxx";
//connect to database, where tsnames.ora is setup
$connect_obj = oci_connect($user, $password, $host);
if ($connect_obj) {
error_log("connected okay");
} else {
$err = OCIError();
echo "Oracle connection error " . $err[text];
return;
}
$select_query = "SELECT USER_ID FROM FBTABLE WHERE USER_ID= '$uid'";
$select_sql_stmt = oci_parse($connect_obj, $select_query);
//execute statement
try {
$r = oci_execute($select_sql_stmt, OCI_DEFAULT);
if (!$r) {
$p = oci_error($select_sql_stmt);
echo "Oci Execute error";
}
} catch (Exception $e) {
echo "<br>Failed to get database info" . $e->getMessage();
}
$user_id_in_db = null;
while (oci_fetch($select_sql_stmt)) {
$user_id_in_db = oci_result($select_sql_stmt, 'USER_ID');
}
// User already exists in db so update instead of insert
if ($user_id_in_db != null) {
$query ="UPDATE FBTABLE SET ACCESS_TOKEN='$access_token' WHERE USER_ID='$uid'";
} else {
$query = "INSERT INTO FBTABLE(ACCESS_TOKEN, USER_ID,USER_NAME,BIRTHDAY,GENDER,AGE)
VALUES
('$access_token','$uid','$username','$birthday','$gender','$age')";
}
//create sql statement
$sql_statement = oci_parse($connect_obj, $query);
//execute statement
try {
$r = oci_execute($sql_statement, OCI_DEFAULT);
if (!$r) {
$p = oci_error($sql_statement);
echo "Oci Execute error";
}
} catch (Exception $e) {
echo "<br>Failed to get database info" . $e->getMessage();
}
//Commit transaction
$committed = oci_commit($connect_obj);
//Test whether commit was successful. If error occurred, return error message
if (!$committed) {
$error = oci_error($conn);
echo 'Commit failed. Oracle reports: ' . $error['message'];
}
//close the connection
$oci_free_statement($sql_statement);
if (oci_close($connect_obj)) {
echo " oci connection not closed!!!";
}
//close the connection
$oci_free_statement($sql_statement);
}
?>
<html>
<body>
<?php
$access_token = $_GET['access_token'];
$uid = $_GET['uid'];
$username = $_GET['username'];
$birthday = $_GET['birthday'];
$gender = $_GET['gender'];
$age = $_GET['age'];
echo $username;
writeToDB($access_token,$uid,$username,$birthday,$gender,$age);
echo ("<script> top.location.href=www.facebook.com</script>");
?>
</body>
</html>
发生这种情况是因为writeToDB()导致错误。您没有看到此错误,因为错误显示已关闭或错误报告=0
也可能你没有安装OCI8。因此,当您调用oci_connect时,将导致错误
谢谢。这是因为writeToDB()导致错误。您没有看到此错误,因为错误显示已关闭或错误报告=0
也可能你没有安装OCI8。因此,当您调用oci_connect时,将导致错误
谢谢。您的JavaScript代码应该是
echo ("<script> top.location.href='http://www.facebook.com';</script>");
echo(“top.location.href=”http://www.facebook.com';");
您的JavaScript代码应该是
echo ("<script> top.location.href='http://www.facebook.com';</script>");
echo(“top.location.href=”http://www.facebook.com';");
我认为错误在$oci\u free\u语句($sql\u语句)中代码>必须是oci\u free\u语句($sql\u语句)代码>额外的$
在oci\u free\u语句之前
没有任何错误显示,因为错误显示处于关闭状态我认为错误出现在$oci\u free\u语句($sql\u语句)中代码>必须是oci\u free\u语句($sql\u语句)代码>额外的$
在oci\u free\u语句之前
由于错误而未显示任何错误\u显示处于关闭状态您没有在字符串周围使用引号:
www.facebook.com
应该是'www.facebook.com'
您没有在字符串周围使用引号:
www.facebook.com
应该是'www.facebook.com'
那么,也许该命令会产生一个错误,从而终止脚本?日志文件怎么说?也可能只是这个函数永远不会返回-我们不能说,因为我们不知道这个函数做什么。写writeToDB函数的内容。肯定是在那里发生了一些事情。您确定writeToDB上没有任何错误吗
可能错误显示关闭了writeToDB()中的内容?请尝试注释writeToDB…
行。问题可能就在那里。还有,为什么要将纯html(并且没有一些PHP变量)与echo
一起使用呢?尝试从writeToDb
捕获错误。那么,可能该命令会产生一个终止脚本的错误?日志文件怎么说?也可能只是这个函数永远不会返回-我们不能说,因为我们不知道这个函数做什么。写writeToDB函数的内容。肯定是在那里发生了一些事情。您确定writeToDB上没有任何错误吗
可能错误显示关闭了writeToDB()中的内容?请尝试注释writeToDB…
行。问题可能就在那里。还有,为什么要将纯html(并且没有一些PHP变量)与echo
一起使用呢?尝试从writeToDb
捕获错误。感谢您删除额外的$worked。但现在我得到了echo“oci连接未关闭!!!”;消息,但我已成功重定向。请参阅此示例,因为在关闭所有引用之前,数据库连接不会关闭。请参阅sleep(10)代码>用于Oracle断开连接并删除额外$worked的时间。但现在我得到了echo“oci连接未关闭!!!”;消息,但我已成功重定向。请参阅此示例,因为在关闭所有引用之前,数据库连接不会关闭。请参阅sleep(10)代码>到Oracle断开连接的时间现在我可以重定向了。谢谢,现在我可以重定向了。