mysql_connect在php 5.6+中的使用
mysql_connect在php 5.6+中的使用
此问题已经在此处有答案:
我在Godaddy托管中使用PHP 5.4。我有一个PHP脚本在其中正常工作。现在我更换了托管并且新的托管公司提供了PHP 5.6。我不会编写PHP代码。我在我的脚本中遇到以下错误
已弃用:mysql_connect():mysql扩展已被弃用,将来将被删除:请改用mysqli或PDO,位于/home4/z4g9f1v6/public_html/mydomain.com/folder/config.php的第7行
我的配置文件如下
$mysql_hostname = "localhost"; $mysql_user = "dbuser"; $mysql_password = "dbpass"; $mysql_database = "dbname"; $bd = mysql_connect($mysql_hostname, $mysql_user, $mysql_password) or die("Could not connect database"); mysql_select_db($mysql_database, $bd) or die("Could not select database");
我在我的Search.php中使用它,如下所示
include("config.php"); if($_SERVER["REQUEST_METHOD"] == "POST") { mysql_query('SET character_set_results=utf8'); mysql_query('SET names=utf8'); mysql_query('SET character_set_client=utf8'); mysql_query('SET character_set_connection=utf8'); mysql_query('SET character_set_results=utf8'); mysql_query('SET collation_connection=utf8_general_ci'); $q=$_POST['q']; $q=mysql_escape_string($q); $q_fix=str_replace(" ","%",$q); // Space replacing with % $sql=mysql_query("SELECT qu_text FROM quotes WHERE qu_text LIKE '%$q%'"); }while($row=mysql_fetch_array($sql)){$title=$row['qu_text'];
请帮帮我。我应该如何解决这个问题?
谢谢
admin 更改状态以发布 2023年5月20日
随着PHP逐渐成为面向对象的脚本语言,更好的连接数据库和执行操作可以通过使用PDO来实现,但需要付出更多的努力。比如为每个表创建实体类(每一列作为变量),这是唯一繁琐的,但可以使程序更安全和更易读。
我只是提供连接到数据库并检索数据集的代码:
1. DBConfig.php
$dsn = 'mysql:dbname=;host= '; $user = ' '; $password = ' '; try { $conn = new PDO($dsn, $user, $password); } catch (PDOException $e) { echo 'Connection failed: ' . $e->getMessage(); }
2. Search.php
require_once 'DBConfig.php'; //If DBConnection is not made in same file require_once '.php'; $q = (isset($_POST['q']) && !empty($_POST['q'])) ? $_POST['q'] : NULL; try { $query = "SELECT qu_text FROM quotes WHERE qu_text LIKE :q"; $stmt = $conn->prepare($query); $stmt->bindValue(':q', $q, PDO::PARAM_STR); $stmt->execute(); while($row = $stmt->fetch()) { $dataset[] = new ($row); } if(!empty($dataset)) { foreach ($dataset as $data) { echo ' '; echo $data->get
'; } } else echo 'empty database'; } catch (Exception $ex) { echo 'Some error occured: ' . $e->getMessage(); }; echo '
谢谢和问候。
使用Myqli连接
$mysql_hostname = "localhost"; $mysql_user = "dbuser"; $mysql_password = "dbpass"; $mysql_database = "dbname"; $bd = mysqli_connect($mysql_hostname, $mysql_user, $mysql_password,$mysql_database) or die("Could not connect database");
请遵循这个答案进行查询如何在PHP中防止SQL注入?它非常好。
您可以使用此进行查询
$sql=sprintf("SELECT qu_text FROM `quotes` WHERE qu_text LIKE '%s%%'"),mysqli_real_escape_string($bd,$q)); $fetch= mysqli_query($bd,$sql) or die(mysql_error()); while ($row = mysqli_fetch_array($fetch, MYSQLI_ASSOC)) { //Your Result }
大多数mysql_语法都可以与mysqli_一起使用