php - 在函数中包含sql查询

标签 php sql

我花了很多天解决这个问题,但无法解决它,正在寻求帮助。 假设我有这个 php-sql:

$sql2= mysql_query("SELECT * FROM jos_comprofiler WHERE id = ".$userid."");
$row2 = mysql_fetch_array($sql2) ;
$bdate= $row2['cb_birthday']; // 2012-03-01 year/month/day

这个函数:

function _weeks($date) { 
  global $bdate ;
  $month = substr($date, 0, 2) ;
  $day = substr($date, 3, 2);
  $year = substr($date, 6, 4) ;
  $bmonth = substr($bdate, 5, 2) ;
  $bday = substr($bdate, 8, 2);
  $byear = substr($bdate, 0, 4) ;
  $birthday = gmmktime(0, 0, 0, $bmonth, $bday, $byear);
  $eventdate = gmmktime(0, 0, 0, $month, $day, $year);

  $weeknumber = (int)(($eventdate - $birthday) / (7 * 24 * 60 * 60)) + 1 ;
  return $weeknumber ;
}

我有 10 个提交按钮来提交日期

if (isset($_POST['submit0'])){
  if ($userid !=0 ){
    $date0 = $_POST['date0'];
    $func_date= _weeks($date0);
    mysql_query(" UPDATE data SET w_dd = '".$func_date."' WHERE id_user= '".$userid."' ");
    $sql= mysql_query("SELECT id_user FROM data WHERE id_user='".$userid."' ");
    $result= mysql_num_rows($sql);
    mysql_query(" UPDATE data SET dd = '".$date0."' WHERE id_user= '".$userid."' ");
  }

  if (isset($_POST['submit1'])){
    if ($userid !=0 ){
      $date1 = $_POST['date1'];
      $func_date= _weeks($date1);
      mysql_query(" UPDATE data SET w_dd = '".$func_date."' WHERE id_user= '".$userid."' ");
      $sql= mysql_query("SELECT id_user FROM data WHERE id_user='".$userid."' ");
      $result= mysql_num_rows($sql);
      mysql_query(" UPDATE data SET dd = '".$date1."' WHERE id_user= '".$userid."' ");
    }

...依此类推,直到提交9按钮。

问题是函数中的 $bdate ,它不能像那样工作 $bdate ,但是如果我尝试像下面这样设置特定日期,它就可以工作就像一个魅力$func_date

function _weeks($date){
  $bdate = "2012-03-01";

我什至将 $bdate 放入函数内,但这也不起作用。 我怎样才能做到这一点?谢谢!

最佳答案

试试这个

$userid = ""; // Nuot sure where this is form ;
$date = "";
$mysql = new mysqli ( "localhost", "root", "", "db" );

if ($mysql->connect_errno) {
    printf ( "Connect failed: %s\n", $mysql->connect_error );
    exit ();
}

$result = $mysql->query ( sprintf ( "SELECT cb_birthday FROM jos_comprofiler id = '%s'", $userid ) );

if (! $result) {
    die ( "Error Runing jos_comprofiler query" );
}

$josProfile = $result->fetch_assoc ();

$_POST ["date0"] = "03/22/2012 "; // Sample
$_POST ["submit0"] = "oK"; // Sample

for($i = 0; $i < 10; $i ++) {
    if (! isset ( $_POST ["submit$i"] ) || ! isset ( $_POST ["date$i"] )) {
        continue;
    }
    $date = $_POST ["date$i"];
    $weekNumber = weekNumber ( $josProfile ['cb_birthday'], $date );
    if ($userid != 0) {
        $this->query ( sprintf ( "UPDATE data SET w_dd = '%s' ,  dd = '%s'  WHERE id_user= '%s' ", $weekNumber, $date, $userid ) );
    }
}

function weekNumber($birthDay,$postDate) {
    $postDate = trim($postDate);
    $birthDay = trim($birthDay);
    $postDate = DateTime::createFromFormat('m/d/Y', $postDate);
    $birthDay = DateTime::createFromFormat('Y-m-d', $birthDay);
    $sec = (int) $postDate->format("U") - $birthDay->format("U");   
    return ceil($sec / (60 * 60 * 24 * 7));
}

您遇到 DateTime::createFromFormatmysqli 问题,您可以使用

$userid = ""; // Nuot sure where this is form ;
$date = "";

$result = mysql_query( sprintf ( "SELECT cb_birthday FROM jos_comprofiler id = '%s'", $userid ) );
$josProfile = mysql_fetch_array($result);

$_POST ["date0"] = "03/22/2012 "; // Sample
$_POST ["submit0"] = "oK"; // Sample

for($i = 0; $i < 10; $i ++) {
    if (! isset ( $_POST ["submit$i"] ) || ! isset ( $_POST ["date$i"] )) {
        continue;
    }
    $date = $_POST ["date$i"];
    $weekNumber = weekNumber ( $josProfile ['cb_birthday'], $date );
    if ($userid != 0) {
       mysql_query( sprintf ( "UPDATE data SET w_dd = '%s' ,  dd = '%s'  WHERE id_user= '%s' ", $weekNumber, $date, $userid ) );
    }
}




function weekNumber($birthDay, $postDate) {
    $postDate = trim ( $postDate );
    $birthDay = trim ( $birthDay );

    list($postMonth,$postD,$postYear) = explode("/", $postDate);
    list($birthYear,$birthMonth,$birthD) = explode("-", $birthDay);

    $postTime = mktime(0, 0, 0, $postMonth, $postD, $postYear);
    $birthTime =  mktime(0, 0, 0, $birthMonth, $birthD, $birthYear);

    $sec = ( int )$postTime - $birthTime;
    return ceil ( $sec / (60 * 60 * 24 * 7) );
}

如果您有任何其他问题,请告诉我

关于php - 在函数中包含sql查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10093806/

相关文章:

php - 如何在 mySQL 数据库中安全地插入代码

php - MySQL - 如果另一个表中不存在记录,则更新表

mysql - SQL - 使用随机 IP 地址更新所有行的列

mysql - 使用时间戳(或日期时间)作为主键的一部分(或聚簇索引的一部分)

php - ECK Drupal 模块 + Commerce Marketplace 实体错误

php - MySQL:如何创建在数组索引上使用数组变量执行的查询?

php - 尝试从 PHP 连接到 Azure DB 时出现 "Call to undefined function sqlsrv_connect()"

C# SQL 存储过程(插入) - 传递参数和检索参数

mysql - 优化具有 3 列的 3600 万行表的 SQL 内部联接

mysql - 将旧文本数据库转换为 SQL