记wampserver下PHP开发MySQL的一些注意事项

Wampserver

  • 在利用form.html的表单来测试PHP的_POST[]函数的时候,发现php总是接收不到表单传来的数据而且会导致原先正常运行的php网页出错。后来发现打开form.html的方式出现了。一开始我错误的直接在文件资源管理器里面直接打开form.html,这时候浏览器的地址栏就会以file://开头,如file:///C:/wamp/www/form.html。正确的做法应该是用http协议去访问form.html,浏览器的地址栏如 http://localhost/form.html 形式。

PHP

  • 在利用php的mysqli来访问MySQL的时候,可能有时sql语句会出现错误从而返回一个空的对象。如果继续用这个空的对象来进行一些操作,例如mysqli的一些变量可能会采用->的方式来访问内部变量或者函数的话,就会导致->的以后php内部内容以网页的形式显示出来。这种情况下最好就是添加一个判断为空的if语句来防止继续访问空的对象。
  • 在腾讯云尝试自己搭建了MySQL+PHP+Apache2的ubuntu环境下,发现如果采用mysqli来处理数据库需要注意下异常的判断,也就是在对数据库进行操作的时候要尽量在try-catch语句块中进行,否则网页就会返回错误

MySQL

综合

  • 在开发的时候需要利用中文来进行信息的传递,这个时候就需要MySQL、PHP的编码格式设置为utf-8。PHP的设置方法比较简单,在脚本中添加以下语句即可:
    header(“content-type: text/html; charset=utf-8”);
    php连接数据库的时候也需要以utf-8的编码格式来传递数据,具体的设置方法如下:
// 创建连接
    $conn = new mysqli($servername, $username, $password, $dbname);
    // 检测连接
    if ($conn->connect_error) {
        die("连接失败: " . $conn->connect_error);
    }
    //设置编码格式来容纳中文,避免乱码
    $conn->query("set character set 'utf8'");//读库 
    $conn->query("set names 'utf8'");//写库  

在一些客户端如Android也需要注意中文乱码的处理。在Android端利用HttpURLConnection来处理的时候,参照一下博客HTTPURLCONNECTION传递中文乱码

HttpURLConnection urlConn = (HttpURLConnection) url.openConnection();

urlConn.connect();

DataOutputStream out = new DataOutputStream(urlConn.getOutputStream());

String content = "传递中文的问题";

out.writeBytes(content);

out.flush();

out.close();

urlConn.disconnect();

依照上面的方式传递中文,服务器得到的一定是一堆乱码,原因:out.writeBytes(content);该语句在转中文时候,已经变成乱码

public final void writeBytes(String s) throws IOException {
int len = s.length();
for (int i = 0 ; i < len ; i++) {
out.write((byte)s.charAt(i));
}
incCount(len);
} 

因为java里的char类型是16位的,一个char可以存储一个中文字符,在将其转换为 byte后高8位会丢失,这样就无法将中文字符完整的输出到输出流中。所以在可能有中文字符输出的地方最好先将其转换为字节数组,然后再通过write写入流,目前尝试过这种方法:把上面链接代码中的out.writeBytes(content);替换为out.write(content.getBytes());先把数据转成BYTE在写入流,执行成功,服务器接收正确的中文内容,

你可能感兴趣的:(wampserver)