使用PDO的资源链接标识符?

时间:2014-04-15 02:26:32

标签: mysql

(PDO的新手和一般DB的经验有限):)

我正在切换到项目中使用PDO ..

即使数据被转储到数据库......有一个奇怪的'警告'..显示我试图使用的表的合并..(和另一个我不是)... SELECT()。 .etc即使我试图INSERT()..等..

使用NON-PDO方法工作正常(这看起来有点奇怪)..

示例:

include("../_include/db_forms.php");       
mysql_query("INSERT INTO $tablename (timestamp, fullname, email, formcode, ipaddress, alldata) VALUES ('" .  date("YmdHis") . "','" . mysql_real_escape_string($_POST['name']) . "','" . mysql_real_escape_string($_POST['email']) . "','" .     $formcode . "','" . $_SERVER['REMOTE_ADDR'] . "','" . mysql_real_escape_string($allData) . "')");

^没有警告/数据转储到DB就好了

在搜索/询问了一下之后......看起来CMS的另一个开放数据库连接(对于页面/页眉/页脚的其他方面包括files..etc)正被用于其他查询,(或者反之亦然)..这导致警告/问题。

我被告知添加资源链接标识符可以解决这个问题......

现在我明白它是什么..,以及为什么使用它(多个DB ...这是对应该使用/打开的内容的引用。)

但是......我不确定如何实现一个...特别是使用PDO方法。

这是我的PDO方法/代码:

require_once("../_include/db_pdo_fulllog.php"); //just a .php file with DEFINE()'s for DB connection details
// new DB routine PDO approach //
$sql = "INSERT INTO $tablename (timestamp, fullname, email, formcode, ipaddress, alldata) VALUES (?,?,?,?,?,?)";
try {
    $conn = new PDO("mysql:host=" . DBSERVER . ";dbname=" . DBNAME, DBLOGIN, DBPASSWORD);
    $stmt = $conn->prepare($sql);   
    //$stmt = $conn->prepare("INSERT INTO fulllog(timestamp, fullname, email, formcode, ipaddress, alldata) VALUES (?,?,?,?,?,?)");
    //timestamp
    $ts = date('Y-m-d H:i:s');
    $stmt->bindParam(1, $ts);                                           
    //name
    $stmt->bindParam(2, $_POST['name']);
    //email
    $stmt->bindParam(3, $_POST['email']);
    //formcode
    $stmt->bindParam(4, $formcode);
    //ip address
    $stmt->bindParam(5, $_SERVER['REMOTE_ADDR']);
    //all data
    $allData = $_POST['session_title'] .' '. $_POST['session_type'] .' '. $_POST['description'] .' '. $_POST['goals'] .' ' . $_POST['faculty'] .' '. $_POST['chapter'];
    $stmt->bindParam(6, $allData);              

    //execute built statement
    $stmt->execute();
}                           
    catch(PDOException $e) {    
        echo $e->getMessage(); 
        die;
}

如何为此添加资源链接标识符...以停止使用多个数据库的警告/错误?

感谢。

编辑:

(自提出要求以来)

错误/警告消息:

  

警告:mysql_fetch_row()要求参数1为资源,在第126行的/usr/www/users/xxxxorg/xxxx.org/admincms/_includes/class.now_cms.php中给出布尔值   查询中的Err(表'xxxx_forms.fulllogContent'不存在):SELECT n.NodeName,n.ContentId,n.ParentId,n.NodeOrder,n.ParentNode,n.ContentTitle,n.ContentType,n.Status,n .ShowOnNav,n.ShowNav,n.ShowOnSitemap,n.ForceSSL,n.TargetWindow,n.ResourceUrl,n.ShortTitle,n.Keywords,n.Description,n.CCount,n.COrderField,n.COrder,COALESCE(t .TemplateBody,dt.TemplateBody)作为模板,COALESCE(ct.TemplateBody,dt.TemplateBody)作为ChildTemplate,n.UserGroups,n.Comments,n.Sticky,IF(md.MetaId IS NULL,0,1)作为HasMetaData FROM fulllogContent n LEFT JOIN fulllogTemplate t ON n.Template = t.TemplateId LEFT JOIN fulllogTemplate ct ON n.ChildTemplate = ct.TemplateId LEFT JOIN fulllogTemplate dt ON dt.TemplateId = dt.TemplateId AND dt.Status = 2 LEFT JOIN fulllogSection s ON n .SectionId = s.SectionId LEFT JOIN fulllogMetaDefine md ON s.SectionId = md.SectionId WHERE n.Status = 1 AND n.PubDate< = NOW()AND(n.ExpDate> = NOW()OR n.ExpDate = '0000-00-00 00:00:00')按CONCAT排序(如果(n.ParentId = 0, '','/'),n.ParentNode),n.NodeOrder

再次..我的表是-not-'xxxx_forms.fulllogContent'但事实上:'xxxx_forms.fulllog'

并且大多数其他东西甚至都不适用于我的表/ DB ..(我也不做SELECT ..我正在做一个INSERT)..

所以它(某种程度上)仍然打开/正在使用CMS数据库..并且正在与我想要的合并/混合。

要重新迭代..数据被转储到数据库......但页面没有刷新/解析并显示此警告/错误..

2 个答案:

答案 0 :(得分:0)

PDO对象 IS 这样的"链接标识符"本身 - 所以,你不需要任何其他东西。

因此,您的问题未与PDO相关联。

要获得有关特定错误消息的帮助,您必须完整而准确地发布此特定消息,而不是用模糊的术语来描述。

答案 1 :(得分:0)

修复此问题的解决方案似乎是将define()常量名称更改为与其他连接使用的常量名称唯一/不同。感谢您的反馈