09/10/2018, 23:17

PHP5: bindValue & bindParam

ai code php 5 và đã dùng thư viện PDO cho mysql cho em hỏi hàm bindValue và bindParam nó khác nhau thế nào ???


Và ai đã test local PHP5 trên Linux cho em hỏi (Fedora Core 5):
em đang xài FC5, sau khi em mở apache, mysql và nâng cấp php 5 rồi thì khi chạy script nó ko nhận hàm bindValue và bindParam của lớp PDO (đã đc dựng sẵn và kích hoạt trong PHP5) nhưng ở win thì lại chạy bình thường, bác nào đã chạy và cài php5 ở FC5 chỉ em với nhé Sad

Đây là link từ PHP manual về 2 hàm này Smiley
http://www.php.net/manual/en/functio...-bindvalue.php
http://www.php.net/manual/en/functio...-bindparam.php
quỷ kiếm viết 01:32 ngày 10/10/2018
Tìm thấy đoạn này trong phần PHP manual.
PHP 5.1 and up on Unix systems

If you're running a PHP 5.1 release, PDO and PDO_SQLITE is included in the distribution; it will be automatically enabled when you run configure. It is recommended that you build PDO as a shared extension, as this will allow you to take advantage of updates that are made available via PECL. The recommended configure line for building PHP with PDO support should enable zlib support (for the pecl installer) as well. You may also need to enable the PDO driver for your database of choice; consult the documentation for database-specific PDO drivers to find out more about that, but note that if you build PDO as a shared extension, you must build the PDO drivers as shared extensions. SQLite extension depends on PDO so if PDO is built as a shared extension, SQLite needs to be built the same way. ./configure --with-zlib --enable-pdo=shared --with-pdo-sqlite=shared --with-sqlite=shared



After installing PDO as a shared module, you must edit your php.ini file so that the PDO extension will be loaded automatically when PHP runs. You will also need to enable any database specific drivers there too; make sure that they are listed after the pdo.so line, as PDO must be initialized before the database-specific extensions can be loaded. If you built PDO and the database-specific extensions statically, you can skip this step. extension=pdo.so



Having PDO as a shared module will allow you to run pecl upgrade pdo as new versions of PDO are published, without forcing you to rebuild the whole of PHP. Note that if you do this, you also need to upgrade your database specific PDO drivers at the same time.

PHP 5.0 and up on Unix systems

PDO is available as a PECL extension from http://pecl.php.net/package/pdo. Installation can be performed via the pecl tool; this is enabled by default when you configure PHP. You should ensure that PHP was configured --with-zlib in order for pecl to be able to handle the compressed package files.

Run the following command to download, build, and install the latest stable version of PDO: pecl install pdo



The pecl command automatically installs the PDO module into your PHP extensions directory. To enable the PDO extension on Linux or Unix operating systems, you must add the following line to php.ini: extension=pdo.so



For more information about building PECL packages, consult the PECL installation section of the manual.
kid08 viết 01:23 ngày 10/10/2018
PDO thì em đã pật chỉ có 2 hàm này ở linux là ko chạy, các hàm khác chạy ngon lành

Thế bác bít nó khác nhau thía nào ko, em đang dùng bindValue
mr47 viết 01:29 ngày 10/10/2018
bindParam là set cho column đó trỏ đến một biến nào đó.
Có nghĩa là sau khi bind, giá trị của biến đó thay đổi thì giá trị của column đó trong câu Query cũng đổi theo (vì nó là con trỏ).
Bạn chỉ có thể sử dụng một biến là paramater trong trường hợp này!
Ví dụ:
//------ Đúng ----
$var = 'pretty woman';
$pdoStatement->bindParam(':column', $var);
$var = 'ugly woman';
$pdoStatement->execute(); // giá trị của column khi execute câu query sẽ là 'ugly woman'
//--- sai - Báo lỗi ---
$pdoStatement->bindParam(':column', 'pretty woman');


bindValue thì nó bind giá trị vào, có nghĩa là bạn có thể làm theo 2 cách trên đều được với bindValue, gì thì gì, giá trị của column đều được gán cho string 'pretty woman'

Còn cái chuyện kia thì tôi biết chết liền!
Just my 2 cents!
kid08 viết 01:26 ngày 10/10/2018
ok, bêy h thỳ đã hỉu nó khác nhau cái gì , chứ hiệu quả thỳ như nhau bác nhỉ, kòn cái chuyện linux kia để em cài các distro khác coi

bác mr47 cho em xin cái nick YM có gì em hỏi
mr47 viết 01:29 ngày 10/10/2018
Thật ra thì khác trong một số trường hợp, tùy theo chủ ý của người viết!

Y!m: baby_learns_to_fly
kid08 viết 01:32 ngày 10/10/2018
bác có thể ví dụ đc ko, nhưng em thấy tác dụng của nó như nhau
Bài liên quan
0