【问题标题】:PHP code warning SQLPHP代码警告SQL
【发布时间】:2013-03-14 18:10:50
【问题描述】:

我正在尝试运行一个 php 文件,但我收到了两个警告,但我似乎无法放置这些警告。警告:

  • PHP 警告:指令 'safe_mode' 在 PHP 5.3 中已弃用,在第 0 行的 Unknown 中已弃用更高版本

  • PHP 警告:mysql_fetch_array() 期望参数 1 是资源,布尔值在 /etc/baseconetrial2.php 第 19 行给出

代码:

<?php


//connectie database


mysql_connect('localhost','heregoestheusername','heregoesthepass');

@mysql_select_db('admin_subscriptions') or die( "Unable to select database");


$type = "proefabonnement";


$checksql = "SELECT * FROM subscriptions where (type_abonnement = '$type' AND  DATE(timestamp) = DATE_SUB( CURDATE( ) , INTERVAL 26))";

$checkresult = mysql_query($checksql);

while ($check = mysql_fetch_array($checkresult)) {





$mail_ontv = "email@emailadress.com"; 

$_POST['onderwerp'] = "Verlopen Trial Account";

    // set datum 
    $datum = date("d.m.Y H:i"); 

    // set ip 
    $ip = $_SERVER['REMOTE_ADDR']; 

    $inhoud_mail .= $_SERVER['SCRIPT_URI'] . "\n\n";

    $inhoud_mail .= "Binnenkort verloopt er een trail account!\n\n\n";  
    $inhoud_mail .= "Bedrijfsnaam: " . $check['bedrijfsnaam'] . "\n\n"; 
    $inhoud_mail .= "Telefoonnummer: " . $check['telefoonnummer'] . "\n\n"; 
    $inhoud_mail .= "E-mail adres: " . $check['email'] . "\n\n"; 
    $inhoud_mail .= "Telefoonnummer contactpersoon: " . $check['telefoonnummercontact'] . "\n\n"; 
    $inhoud_mail .= "E-mail adres contactpersoon: " . $check['emailcontact'] . "\n\n"; 
    $inhoud_mail .= "Hieronder de link voor de klant:\n\n\n";
    $inhoud_mail .= "http://www.basecone.nl/upgrade1?key=".$check['unique']."\n\n"; 

    $inhoud_mail .= "Verstuurd op " . $datum . " via het ip " . $ip . "\n\n"; 

    $headers = "From: BaseconeWizard < wizard@basecone.nl >";

    $headers = stripslashes($headers);
    $headers = str_replace("\n", "", $headers); // Verwijder \n 
    $headers = str_replace("\r", "", $headers); // Verwijder \r 
    $headers = str_replace("\"", "\\\"", str_replace("\\", "\\\\", $headers)); // Slashes van quotes 



    $_POST['onderwerp'] = str_replace("\n", "", $_POST['onderwerp']); // Verwijder \n 
    $_POST['onderwerp'] = str_replace("\r", "", $_POST['onderwerp']); // Verwijder \r 
    $_POST['onderwerp'] = str_replace("\"", "\\\"", str_replace("\\", "\\\\", $_POST['onderwerp'])); // Slashes van quotes 

    mail($mail_ontv, $_POST['onderwerp'], $inhoud_mail, $headers); 







}


?>

谢谢大家!

【问题讨论】:

标签: php sql warnings


【解决方案1】:

PHP 警告:mysql_fetch_array() 期望参数 1 是资源,布尔值在 /etc/baseconetrial2.php 第 19 行给出

$checksql = "SELECT * FROM subscriptions where (type_abonnement = '$type' AND  DATE(timestamp) = DATE_SUB( CURDATE( ) , INTERVAL 26 DAY))";

注意 DATE_SUB mysql 函数的 DAY 参数

我还建议使用 mysql_real_escape_string() 函数来清理“$type”变量

【讨论】:

  • 我明白你的 real_escape 评论,虽然我不清楚你说的另一个是什么意思? '注意 DATE_SUB mysql 函数的 DAY 参数'?
  • 嗨 hd1 我相信我上面写的是对问题的答案(fetch_array 警告)。 mysql 查询中有错误导致 mysql_query 返回“false”而不是资源。修复该问题将消除警告。
  • 嗨,您的 SQL 命令如下所示:.... DATE_SUB( CURDATE( ) , INTERVAL 26)) DATE_SUB 函数还需要一个参数 - 说明 26 是什么 - 例如。日、时、分……
  • 认真的吗?我不知道,我把它放在数字之前还是之后?第 26 天还是第 26 天?谢谢!
  • 没关系,一些谷歌搜索给了我答案!你把它放在你自己的代码中,我看到了。非常感谢!
【解决方案2】:

您的部分代码或您的主机正在使用已被弃用的safe_mode

PHP 安全模式是解决共享服务器安全问题的一种尝试。尝试在 PHP 级别解决此问题在架构上是不正确的,但由于 Web 服务器和操作系统级别的替代方案不太现实,许多人,尤其是 ISP,现在使用安全模式。

请不要使用@ 来抑制错误。使用错误处理程序或启用完整的错误报告。

mysql_fetch_array() 期望参数 1 是资源

您的查询失败,因此将布尔结果传递给mysql_fetch_array。但是由于您没有发现错误,因此您不会知道。

$checkresult = mysql_query($checksql) or die(mysql_error());

【讨论】:

  • 我删除了“@”并添加了您建议的最后一行代码。我的代码的哪一部分使用了 safe_mode,所以我可以修改它?
  • @user1555076 你的 PHP 实例在哪里?在主机上还是本地?如果是本地的,您可以编辑您的php.ini
  • 本地的,我去搜一下PHP.ini。谢谢!
【解决方案3】:

PHP Warning: Directive 'safe_mode' is deprecated in PHP 5.3 and greater in Unknown on line 0

删除或评论

safe_mode = "On/Off" 来自您的 php.ini

对于PHP Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in /etc/baseconetrial2.php on line 19

请使用

if (!$checksql) die(mysql_error()); 

它会在查询中显示问题

【讨论】:

  • 谢谢,准备试试看!
猜你喜欢
  • 1970-01-01
  • 2015-12-24
  • 1970-01-01
  • 1970-01-01
  • 2018-01-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-14
相关资源
最近更新 更多