标签: mysqli

mysqli或PDO - 有什么优缺点?

在我们的位置,我们将使用mysqli和PDO分为准备语句和事务支持之类的东西.有些项目使用一个,另一个项目.我们很难有可能转移到另一个RDBMS.

我更喜欢PDO,因为它允许为预准备语句提供命名参数,据我所知,mysqli没有.

在我们整合项目时只使用一种方法,是否还有其他优点和缺点选择其中一种作为标准?

php mysql mysqli pdo database-abstraction

342
推荐指数
10
解决办法
13万
查看次数

使用PHP时MySQL与MySQLi

哪个更好,MySQL还是MySQLi?为什么?我应该使用哪个?

我的意思不仅仅是在性能方面,还有其他相关功能.

php mysql mysqli

162
推荐指数
5
解决办法
22万
查看次数

MySQL,MySQLi和PDO有什么区别?

MySQL,MySQLiPDO有什么区别?

哪一个最适合与PHP-MySQL一起使用?

php mysql mysqli pdo

124
推荐指数
3
解决办法
11万
查看次数

调用未定义的方法mysqli_stmt :: get_result

这是我的代码:

include 'conn.php';
$conn = new Connection();
$query = 'SELECT EmailVerified, Blocked FROM users WHERE Email = ? AND SLA = ? AND `Password` = ?';
$stmt = $conn->mysqli->prepare($query);
$stmt->bind_param('sss', $_POST['EmailID'], $_POST['SLA'], $_POST['Password']);
$stmt->execute();
$result = $stmt->get_result();
Run Code Online (Sandbox Code Playgroud)

我在最后一行得到错误:调用未定义的方法mysqli_stmt :: get_result()

这是conn.php的代码:

define('SERVER', 'localhost');
define('USER', 'root');
define('PASS', 'xxxx');
define('DB', 'xxxx');
class Connection{
    /**
     * @var Resource 
     */
    var $mysqli = null;

    function __construct(){
        try{
            if(!$this->mysqli){
                $this->mysqli = new MySQLi(SERVER, USER, PASS, DB);
                if(!$this->mysqli)
                    throw new Exception('Could not create connection using …
Run Code Online (Sandbox Code Playgroud)

php mysqli

107
推荐指数
9
解决办法
12万
查看次数

我可以在PHP中混合MySQL API吗?

我搜索过网络,到目前为止我所看到的是你可以使用mysql_mysqli_一起意义:

<?php
$con=mysqli_connect("localhost", "root" ,"" ,"mysql");

if( mysqli_connect_errno( $con ) ) {
    echo "failed to connect";
}else{
    echo "connected";
}
mysql_close($con);
echo "Done";
?>
Run Code Online (Sandbox Code Playgroud)

要么

<?php
$con=mysql_connect("localhost", "root" ,"" ,"mysql");
if( mysqli_connect_errno( $con ) ) {
    echo "failed to connect";
}else{
    echo "connected";
}
mysqli_close($con);
echo "Done";
?>
Run Code Online (Sandbox Code Playgroud)

有效,但是当我使用这段代码时,我得到的是:

Connected
Warning: mysql_close() expects parameter 1 to be resource, object given in D:\************.php on line 9
Done
Run Code Online (Sandbox Code Playgroud)

对于第一个和相同的除外mysqli_close().对于第二个.

问题是什么?我不能使用mysql_mysqli在一起?还是正常的?我可以检查连接是否有效吗?(if(mysq...))

php mysql mysqli pdo

102
推荐指数
2
解决办法
1万
查看次数

如果我使用下拉列表,是否必须防止SQL注入?

我知道你绝不应该信任表单中的用户输入,主要是因为SQL注入的可能性.

但是,这是否也适用于唯一输入来自下拉列表的表单(见下文)?

我将保存$_POST['size']到一个会话,然后在整个站点中使用该会话来查询各种数据库(使用mysqliSelect查询),任何SQL注入肯定会损害(可能会丢失)它们.

查询数据库的类型用户输入没有区域,只有下拉列表.

<form action="welcome.php" method="post">
<select name="size">
  <option value="All">Select Size</option> 
  <option value="Large">Large</option>
  <option value="Medium">Medium</option>
  <option value="Small">Small</option>
</select>
<input type="submit">
</form>
Run Code Online (Sandbox Code Playgroud)

php mysql mysqli sql-injection

95
推荐指数
9
解决办法
9654
查看次数

命令不同步; 你现在不能运行这个命令

我正在尝试执行我的PHP代码,它通过mysqli调用两个MySQL查询,并得到错误"命令不同步;你现在无法运行此命令".

这是我正在使用的代码

<?php
$con = mysqli_connect("localhost", "user", "password", "db");
if (!$con) {
    echo "Can't connect to MySQL Server. Errorcode: %s\n". Mysqli_connect_error();
    exit;
}
$con->query("SET NAMES 'utf8'");
$brand ="o";
$countQuery = "SELECT ARTICLE_NO FROM AUCTIONS WHERE upper(ARTICLE_NAME) LIKE % ? %";
if ($numRecords = $con->prepare($countQuery)) {
    $numRecords->bind_param("s", $brand);
    $numRecords->execute();
    $data = $con->query($countQuery) or die(print_r($con->error));
    $rowcount = $data->num_rows;
    $rows = getRowsByArticleSearch("test", "Auctions", " ");
    $last = ceil($rowcount/$page_rows);
}  else {

print_r($con->error);
}
foreach ($rows as $row) {
    $pk = $row['ARTICLE_NO'];
    echo '<tr>' …
Run Code Online (Sandbox Code Playgroud)

php mysql sql mysqli

86
推荐指数
6
解决办法
18万
查看次数

如何在不同的环境中获取MySQLi错误信息

在我的本地/开发环境中,MySQLi查询执行正常.但是,当我在我的Web主机环境中上传它时,我收到此错误:

致命错误:在...中的非对象上调用成员函数bind_param()

这是代码:

global $mysqli;
$stmt = $mysqli->prepare("SELECT id, description FROM tbl_page_answer_category WHERE cur_own_id = ?");
$stmt->bind_param('i', $cur_id);
$stmt->execute();
$stmt->bind_result($uid, $desc);
Run Code Online (Sandbox Code Playgroud)

为了检查我的查询,我试图通过控制面板phpMyAdmin执行查询,结果是OK.

php environment mysqli error-reporting prepared-statement

85
推荐指数
1
解决办法
1万
查看次数

致命错误:未找到"MySQLi"类

我正在做一个教程,我收到此错误:

致命错误:第8行找不到类'MySQLi'(LONG URL)

第8行的代码是:

$mysqli = new MySQLi($db_server, $db_user, $db_pass, $db_name) or die(mysqli_error());
Run Code Online (Sandbox Code Playgroud)

我在网上看到有人说要看看它是否在我的phpinfo()中打开了,但是其中没有列出"mysqli"的内容.

另外,我正在运行PHP 5.2.5版

php mysqli

82
推荐指数
7
解决办法
24万
查看次数

标头和客户端库次要版本不匹配

在PHP中,每当我尝试连接到数据库时,我都会收到以下警告(通过mysql_connect)

警告:mysql_connect():标头和客户端库次要版本不匹配.标题:50162图书馆:50524

在我的php -i输出中,我在mysqli下列出了以下值

客户端API库版本=> 5.5.24

客户端API标头版本=> 5.1.62

我已经尝试更新php5-mysql php,但我已经在他们两个的最新版本.如何更新标题版本以便我不再看到此警告?

编辑

我的MySQL文件应全部更新为最新版本:

$ apt-get install mysql.*5.5
. . .
mysql-client-5.5 is already the newest version.
mysql-server-core-5.5 is already the newest version.
mysql-server-5.5 is already the newest version.
mysql-testsuite-5.5 is already the newest version.
mysql-source-5.5 is already the newest version.
Run Code Online (Sandbox Code Playgroud)

删除旧版本

$ apt-get remove mysql.*5.1
. . .
Package handlersocket-mysql-5.1 is not installed, so not removed
Package mysql-cluster-client-5.1 is not installed, so not removed
Package mysql-cluster-server-5.1 …
Run Code Online (Sandbox Code Playgroud)

php ubuntu mysqli warnings

80
推荐指数
6
解决办法
20万
查看次数