开始自学php,代码是自己从网上找的,写在这里作为笔记翻看。
我有SSH整合的经验,也有基础的jdbc知识,学php照猫画虎吧。
查询功能:
<?php //设置页面编码格式 header ( "content-Type: text/html; charset=GBK" ); //生成连接对象$conn,三个参数分别是数据库的用户名,密码,以及sid $conn = oci_connect ( 'testphp', '123', 'ORACLE11' ); //sql语句 $sql = "select * from userinfo"; //这句话相当于jdbc的preparestatement对象 $statement = oci_parse ( $conn, $sql ); //执行,返回值类型为boolean if (oci_execute ( $statement )) { //OCI_BOTH是数字和列名同时索引,如$row[1]和$row['username']的意义是相同的 while ( ($row = oci_fetch_array ( $statement, OCI_BOTH )) ) { echo $row ['USERNAME'] . " " . $row ['PASSWORD'] . "<br>"; } } //释放以及关闭资源 oci_free_statement ( $statement ); oci_close ( $conn ); ?>
插入功能:
<?php header ( "content-Type: text/html; charset=GBK" ); ?> <script type="text/javascript"> function validate(){ var username=document.getElementById("username").value; var password=document.getElementById("password").value; var pwd=document.getElementById("pwd").value; document.getElementById("form1").submit(); } </script> <form id="form1" action="insertUserinfo.php" method="post"> <table> <tr> <td>用户名</td> <td><input type="text" id="username" name="username"></td> </tr> <tr> <td>密码</td> <td><input type="password" id="password" name="password"></td> </tr> <tr> <td>确认密码</td> <td><input type="password" id="pwd" name="pwd"></td> </tr> <tr> <td><input type="button" onclick="validate()" id="ok" value="提交"></td> <td></td> </tr> </table> </form>
后台处理:
<?php header ( "content-Type: text/html; charset=GBK" ); $username = $_POST ["username"]; $password = $_POST ["password"]; //mb_convert_encoding($username,"utf-8"); $conn = oci_connect ( 'testphp', '123', 'ORACLE11' ); $statement = oci_parse ( $conn, "insert into userinfo values(idauto.nextval,:username,:password) RETURNING ROWID INTO :id" ); $rowid = oci_new_descriptor ( $conn, OCI_D_ROWID ); oci_bind_by_name ( $statement, ":username", $username, SQL_VARCHAR ); oci_bind_by_name ( $statement, ":password", $password, SQL_VARCHAR ); oci_bind_by_name ( $statement, ":id", $rowid, - 1, OCI_B_ROWID ); if(oci_execute ( $statement)){ echo $username." ".$password; } oci_commit ( $conn ); $rowid->free (); oci_free_statement ( $statement ); oci_close ( $conn ); ?>
这个insert我看了N久的代码,oci上面写的还比较完整,网友也给予一些提示。
为什么页面是GBK格式?因为我插入Oracle的话,utf-8是乱码,GBK就没事,这个问题先这样解决,以后想想如何在utf-8的页面格式下插入数据库
insert语句插入数据库时传参方式和hibernate有点相似,也是冒号:设置参数,不同的是处理sequence上,hibernate在配置文档中写好,php写在sql语句中,估计用到框架的话,也不用再写idauto.nextval了,id是sequence的值,需要我们用oci_new_descriptor 规定一个新的描述,oci_bind_by_name 相当于hibernate的setQuery语句进行传参复制,我甚至怀疑php天生就是防注入的。好了就是这样,update和delete再准备做实验