php函数不会多次工作

php函数不会多次工作

问题描述:

I have made a function to give me the name of a user from their user id. The different user id's will be in a while loop so the function will be used multiple times. It works fine for one user id but gives me an error if there is more than one. The error is "Warning: mysql_select_db(): supplied argument is not a valid MySQL-Link resource"

the code is

<?php 

function user_details($user_id) {

require_once('../Connections/runner.php'); 

if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "") 
{
  $theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;

  $theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string   ($theValue) : mysql_escape_string($theValue);

  switch ($theType) {
    case "text":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;    
    case "long":
    case "int":
      $theValue = ($theValue != "") ? intval($theValue) : "NULL";
      break;
    case "double":
      $theValue = ($theValue != "") ? "'" . doubleval($theValue) . "'" : "NULL";
      break;
    case "date":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;
    case "defined":
      $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
      break;
  }
  return $theValue;
}
}

$colname_users = $user_id;
$first_name = "";
$last_name = "";
mysql_select_db($database_runner, $runner);
$query_users = sprintf("SELECT first_name, last_name, profile_img_small FROM sign_up WHERE   user_id = %s", GetSQLValueString($colname_users, "int"));
$users = mysql_query($query_users, $runner) or die(mysql_error());
$row_users = mysql_fetch_assoc($users);
$totalRows_users = mysql_num_rows($users);
$first_name = $row_users['first_name'];
$last_name = $row_users['last_name'];
$profile_sml = $row_users['profile_img_small'];

echo "$first_name $last_name";
}



?>

<?php
$user_id = 10;
?>

<a href="*"><?php user_details("$user_id"); ?></a>

<?php
$user_id = 9;
?>

<a href="*"><?php user_details("$user_id"); ?></a>

我已经创建了一个函数,可以从用户ID中为我提供用户名。 不同的用户ID将在while循环中,因此该函数将被多次使用。 它适用于一个用户ID,但如果有多个用户ID,则会给我一个错误。 错误是“警告:mysql_select_db():提供的参数不是有效的MySQL-Link资源” p>

代码 p>

 &lt  ;?php 
 
function user_details($ user_id){
 
require_once('../ Connections / runner.php');  
 
if(!function_exists(“GetSQLValueString”)){
 * GetSQLValueString($ theValue,$ theType,$ theDefinedValue =“”,$ theNotDefinedValue =“”)
 {
 $ theValue = get_magic_quotes_gpc()?  stripslashes($ theValue):$ theValue; 
 
 $ theValue = function_exists(“mysql_real_escape_string”)?  mysql_real_escape_string($ theValue):mysql_escape_string($ theValue); 
 
开关($ theType){
 case“text”:
 $ theValue =($ theValue!=“”)?  “'”。  $ theValue。  “'”:“NULL”; 
 break;  
 case“long”:
 case“int”:
 $ theValue =($ theValue!=“”)?  intval($ theValue):“NULL”; 
 break; 
 case“double”:
 $ theValue =($ theValue!=“”)?  “'”。  doubleval($ theValue)。  “'”:“NULL”; 
 break; 
 case“date”:
 $ theValue =($ theValue!=“”)?  “'”。  $ theValue。  “'”:“NULL”; 
 break; 
 case“defined”:
 $ theValue =($ theValue!=“”)?  $ theDefinedValue:$ theNotDefinedValue; 
 break; 
} 
返回$ theValue; 
} 
} 
 
 $ colname_users = $ user_id; 
 $ first_name =“”; 
 $ last_name =“”  ; 
mysql_select_db($ database_runner,$ runner); 
 $ query_users = sprintf(“SELECT first_name,last_name,profile_img_small FROM sign_up WHERE user_id =%s”,GetSQLValueString($ colname_users,“int”)); 
 $ users =  mysql_query($ query_users,$ runner)或die(mysql_error()); 
 $ row_users = mysql_fetch_assoc($ users); 
 $ totalRows_users = mysql_num_rows($ users); 
 $ first_name = $ row_users ['first_name']  ; 
 $ last_name = $ row_users ['last_name']; 
 $ profile_sml = $ row_users ['profile_img_small']; 
 
echo“$ first_name $ last_name”; 
} 
 
 
 
?  &gt; 
 
&lt;?php 
 $ user_id = 10; 
?&gt; 
 
&lt; a href =“*”&gt;&lt;?php user_details(“$ user_id”);  ?&gt;&lt; / a&gt; 
 
&lt;?php 
 $ user_id = 9; 
?&gt; 
 
&lt; a href =“*”&gt;&lt;?php user_details(“$ user_id”  );  ?&gt;&lt; / a&gt; 
  code>  pre> 
  div>

Every time you run the function, you're attempting to require that file only once. Since you're saying don't require it if it's already been required before, it's seeing it has been required before and thus ignoring it. So those variables don't exist the second time you call it and the function inevitably does nothing. I'm thoroughly surprised it doesn't produce other errors since an entire file is missing. It must not be extremely important.