Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:64161 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 39060 invoked from network); 5 Dec 2012 21:15:21 -0000 Received: from unknown (HELO lists.php.net) (127.0.0.1) by localhost with SMTP; 5 Dec 2012 21:15:21 -0000 Received: from [127.0.0.1] ([127.0.0.1:5865]) by pb1.pair.com (ecelerity 2.1.1.9-wez r(12769M)) with ECSTREAM id 05/28-04278-869BFB05 for ; Wed, 05 Dec 2012 16:15:20 -0500 Authentication-Results: pb1.pair.com smtp.mail=mohammad.ghazavi@gmail.com; spf=pass; sender-id=pass Authentication-Results: pb1.pair.com header.from=mohammad.ghazavi@gmail.com; sender-id=pass Received-SPF: pass (pb1.pair.com: domain gmail.com designates 209.85.223.170 as permitted sender) X-PHP-List-Original-Sender: mohammad.ghazavi@gmail.com X-Host-Fingerprint: 209.85.223.170 mail-ie0-f170.google.com Received: from [209.85.223.170] ([209.85.223.170:62662] helo=mail-ie0-f170.google.com) by pb1.pair.com (ecelerity 2.1.1.9-wez r(12769M)) with ESMTP id FC/03-04278-DCD2FB05 for ; Wed, 05 Dec 2012 06:19:42 -0500 Received: by mail-ie0-f170.google.com with SMTP id k10so8719653iea.29 for ; Wed, 05 Dec 2012 03:19:38 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:sender:from:date:x-google-sender-auth:message-id :subject:to:content-type; bh=eOicBKNVK5s/vv63ybSwpNfAjTz1aipR8K8odNlKB/M=; b=mdAVzqdF5rE8lJGeM3o+pLVqKlbwVvrc1lK0oh/2KvfAYKjG8PreTcLbeIcs/myHZ2 9QBCA2gP0E5Edcz2VKnnQJU+0KXGRT2ADaaNGFMoaLKd/Kfk58dc0Eq8Used/6FsyR6a /cwsEm9MDOoZ1KLdQr92JgPkg9YdwodF68qjKczo9yicMWWnZohbCEzzFBe+zJDKep4j DT6NYDc+IElIRVbQa2nBpTjCCszsflaAlxysaDVg94+GhrxXMCrvZPbVpAhO8V8gENaI a3Hgm78khQR7ak1eD9MYjETYg1LHdlztPXH/kjKWhNHgMfIBuR3TeySmAmT6tQK2LP0b toMw== Received: by 10.50.40.201 with SMTP id z9mr1437544igk.59.1354706378493; Wed, 05 Dec 2012 03:19:38 -0800 (PST) MIME-Version: 1.0 Sender: mohammad.ghazavi@gmail.com Received: by 10.50.156.163 with HTTP; Wed, 5 Dec 2012 03:18:58 -0800 (PST) Date: Wed, 5 Dec 2012 14:48:58 +0330 X-Google-Sender-Auth: tSPmXXat33w2YrfRUtdgOV0zdlM Message-ID: To: internals@lists.php.net Content-Type: multipart/alternative; boundary=14dae9340ca7770ee504d0192820 Subject: a simple question about PHP extension: using user function in my own extension From: admin@ecdcconference.org (Amir) --14dae9340ca7770ee504d0192820 Content-Type: text/plain; charset=UTF-8 Hi I am trying to build an PHP extension for my personal project. For some reason. I want to build some part of my project with extension. So, I can make a connection via my extension as you can see below my c++ source code. Cause of poor document, I confused with zend engine source code and c++ and relations with php. I just have a simple question, how can I use mysql funtions work with query and process it like: mysql_query mysql_fetch_assoc and ... here is my code: PHP_FUNCTION(ig_connect_to_ database) { zval fname, *args[3], dbLink; zval selectDB, *args_selectDB[1], retval; /*if(zend_call_method(NULL, NULL, NULL, "mysql_connect", strlen("mysql_connect"), &retval, 1, args[1], args[2] TSRMLS_CC ) == FAILURE) { php_printf("gosh!"); } else { php_printf("yep!"); }*/ ZVAL_STRING(&fname, "mysql_connect", 0); MAKE_STD_ZVAL(args[0]); ZVAL_STRING(args[0], "localhost", 1); MAKE_STD_ZVAL(args[1]); ZVAL_STRING(args[1], "root", 1); MAKE_STD_ZVAL(args[2]); ZVAL_STRING(args[2], "", 1); if (call_user_function(EG(function_table), NULL, &fname, &dbLink, 3, args TSRMLS_CC) == FAILURE) { RETURN_STRING("fail to connect to database", 1); } else { zval_ptr_dtor(&args[2]); zval_ptr_dtor(&args[1]); zval_ptr_dtor(&args[0]); /* *return_value = dbLink; zval_copy_ctor(return_value); */ /****now! I want to select a database on success****/ ZVAL_STRING(&selectDB, "mysql_select_db", 0); MAKE_STD_ZVAL(args_selectDB[0]); ZVAL_STRING(args_selectDB[0], "clickbartarirg", 1); if (call_user_function(CG(function_table), NULL, &selectDB, &retval, 1, args_selectDB TSRMLS_CC) == SUCCESS) { /* I successfully selected database */ ZEND_FETCH_RESOURCE_NO_RETURN(retval); if(&retval) { php_printf("selected"); } else { zend_error(E_ERROR, "failed to select database!"); } zval_ptr_dtor(&args_selectDB[0]); } else { zend_error(E_ERROR, "database problem"); zval_ptr_dtor(&args_selectDB[0]); } } } Thanks. Regards *Amir Ghazavi* *Web Developer IT Manager of ECDC2013* * * *www.ecdcconference.org* --14dae9340ca7770ee504d0192820--