标签: mysqli

PHP mysqli 查询结果与 foreach 循环回显

在我的上一个项目中,我使用foreach循环为每个 mysqli 结果分配了一个变量,例如$r->mydata,但我不小心格式化了我的电脑,所以我丢失了我的核心文件,我不记得我是怎么做到的。我记得我做过这样的事情

$result = $db->query("SELECT * FROM data");
if($result->num_rows){
    while ($row = $result->fetch_object()) {
        foreach ($row as $r){
            $row[] = $r;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我可以像这样从 while 循环外部访问结果:

<?php echo $r->mydata ?>
Run Code Online (Sandbox Code Playgroud)

任何人都可以编辑我的代码,使其像以前一样工作吗?

html php mysqli

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

filter_var 或 mysqli_real_escape_string

我想知道哪个更强filter_varmysqli_real_escape_string.

更具体。

选项1:

//Course Title
$ctitle = trim($_POST['courseTitle']);
$clean_ctitle = filter_var($ctitle, FILTER_SANITIZE_STRING);
Run Code Online (Sandbox Code Playgroud)

选项2:

//Course Title
$ctitle = trim($_POST['courseTitle']);
$clean_ctitle = mysqli_real_escape_string($con, $ctitle);
Run Code Online (Sandbox Code Playgroud)

我也知道准备好的语句,但我想预先过滤进来的数据。如果有其他选择,请告诉我。

html php mysql mysqli

-1
推荐指数
1
解决办法
3489
查看次数

如何在php中使用mvc连接数据库

/* 连接文件 */

    class dbconnect{
        public function connect(){
            $host = 'localhost';
            $user = 'root';
            $pass = '';
            $db = 'demo';
            $connection = mysqli_connect($host,$user,$pass,$db); 
            return $connection;
        }
    }
Run Code Online (Sandbox Code Playgroud)

/* dao 文件 */

    include 'dbconnect.php';
    class dao extends dbconnect{
        private $conn; 
        function __dao(){ 
            $dbcon = new dbconnect();
            $conn = $dbcon->connect();
        }
        function select( $table , $where='' , $other='' ){
            if(!$where = '' ){
                $where = 'where' . $where;
            }
            $sele = mysqli_query($this->conn,"SELECT * FROM  $table $where $other") or die(mysqli_error($this->conn));
            echo $sele;
            return …
Run Code Online (Sandbox Code Playgroud)

php mysqli

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

Mysqli:在use_result之后跳过行

我将任意多语句SQL传递给Mysqli(使用mysqlnd)并检索结果集.SELECT语句可以包含LIMIT子句(或不包含).我需要的是将获取的行限制为1000(硬编码限制).这就是我所拥有的:

define('SAFE_ROWS', 1000); // strict limit

$sql = "SELECT * FROM table1 LIMIT 99999999";

$mysqli->multi_query($sql);

// unbuffered: results are stored at MySQL-side
// and transfer when i call fetch*
$result = $mysqli->use_result();
$rows = [];

while ($row = $result->fetch_array()) {
    if (count($rows) >= SAFE_ROWS) {
        #############################################
        # QUESTION: what i have to do here          #
        # to skip remaining rows of current result? #
        #############################################
        break;
    }
    $rows[] = $row;
}

// As slow as much rows remained …
Run Code Online (Sandbox Code Playgroud)

php mysql mysqli unbuffered-queries mysqlnd

-1
推荐指数
1
解决办法
320
查看次数

如何使用 mysqli 从选择查询的结果中获取列名

我需要创建一个脚本来遍历 MySQL 的结果并自动返回使用 mysqli 在查询中选择的列名。 注意:我将使用一些伪代码来更容易地解释我的观点。显然是错误的

例如一个CLIENTS包含列的表:

ID, NAME, EMAIL, TELEPHONE, ADDRESS
Run Code Online (Sandbox Code Playgroud)

如果我有疑问:

$result =  $mysqli->query("SELECT * FROM CLIENTS WHERE ID = 1");
Run Code Online (Sandbox Code Playgroud)

我需要脚本返回 ID、姓名、电子邮件、电话、地址。

伪代码:

foreach ($result as $column => $value){
   echo $column
}
Run Code Online (Sandbox Code Playgroud)

结果:

ID, NAME, EMAIL, TELEPHONE, ADDRESS,

如果查询只是

$result =  $mysqli->query("SELECT NAME as N, EMAIL as E FROM CLIENTS WHERE ID = 1");
Run Code Online (Sandbox Code Playgroud)

该脚本应该只返回:

N, E,
Run Code Online (Sandbox Code Playgroud)

有想法吗?

php mysql mysqli

-1
推荐指数
1
解决办法
6596
查看次数

我尝试连接php到mysql数据库,请帮助我,我不明白什么是错的

需要帮忙

浏览器写道:解析错误:语法错误,第4行的D:\ php\OSPanel\domains\kek2.net\test.php中的意外'$ connection'(T_VARIABLE)

<? php

$connection = mysqli_connect('127.0.0.1','mysql','','test');

if($connection==false)

{   
    echo"error<br>";
    echo mysqli_connect_error();
    exit();
}
Run Code Online (Sandbox Code Playgroud)

php mysql mysqli phpmyadmin

-1
推荐指数
1
解决办法
61
查看次数

如何在PHP中处理mysqli查询的结果?

我有以下代码:

// Create Connection
$mysqli = new mysqli($host, $username, $password, $db_name);

//Check connection
if($mysqli->connect_error){
    die("Connection failed: " . $mysqli->connect_error);
}
echo "Connected Successfully";



// Retrieve data from database 
$result= $mysqli->query("SELECT * FROM scores ORDER BY score DESC LIMIT 10");
Run Code Online (Sandbox Code Playgroud)

基本上我现在需要知道如何处理这些数据.在数据库中我有一个格式:

Column 1: Name
Column 2: HighScore
Run Code Online (Sandbox Code Playgroud)

我试图在表格的网页上显示这个,所以我需要一种我能处理的格式的查询,到目前为止我所拥有的是:

// Start looping rows in mysql database.
while($rows=mysqli_fetch_array($result)){
    echo $rows['name'] . "|" . $rows['score'] . "|";

    // close while loop 
}
Run Code Online (Sandbox Code Playgroud)

但是,我不相信我正在使用mysqli_fetch_array()正确,因为它没有进入while循环.

php mysqli

-1
推荐指数
1
解决办法
314
查看次数

我可以在准备好的语句中混合无界参数吗?

就像我在$_SESSION['userid']这里做的一样:

function changeEmail($newEmail){
    $stmt = $mysqli->prepare("update `users` set `email`=? where `userid`={$_SESSION['userid']} limit 1");
    $stmt->bind_param('s',$newEmail);
    return $stmt->execute();
}
Run Code Online (Sandbox Code Playgroud)

因为: 的值$_SESSION['userid']是从数据库生成的(通过 auto_increment 整数)所以没有 SQL 注入的风险。另外,我假设连接值比绑定快一点。

php mysql mysqli sql-injection prepared-statement

-1
推荐指数
1
解决办法
88
查看次数

为什么此 SQL UPDATE 查询不适用于 WHERE 的变量?

这是我在 Stack Overflow 上的第一篇文章。我知道这个问题之前已经被问过很多次了。我经历了很多答案,尝试了所有答案(显然正确的方法除外),但不知道该尝试什么了。

我有一个 SQL 表,其中每一行都有一个“编辑”按钮。单击它时,我将所选行的 id 传递给edit.php. 在那里,我得到它并根据用户从表单输入的 id 更新给定的行。第一列是 id ,它被设置为AUTO_INCREMENT

附带说明一下,无论我使用WHERE id=$id";还是使用,我都会遇到相同的错误WHERE id='$id'";

我认为最接近正确方法的代码如下,并在代码下方生成错误消息:

<html>
    <title>
        Video Archiv - New
    </title>
    
    <body>
        <?php
            include("connect.php"); 
            $id=$_GET['id'];
            echo "Details von Video #$id editieren:<br /><br />";
            
            if(isset($_POST['update']))
            {
                $sql =  "UPDATE VideoArchiv             
                        SET ('".$_POST["titel"]."','".$_POST["schauspieler"]."')
                        WHERE id=$id";

                        $result = mysqli_query($connect,$sql);

                if (mysqli_query($connect,$sql) === TRUE) 
                {
                    echo "Record updated successfully";
                } 
                else 
                {
                    echo "Error updating record: " . $connect->error;
                }
            }
            ?>

        <form …
Run Code Online (Sandbox Code Playgroud)

php sql mysqli sql-update

-1
推荐指数
1
解决办法
213
查看次数

我可以强制 mysqli 函数返回错误代码而不是抛出异常吗?

我维护了一个网站,不久前用 PHP 编写。它的大多数功能依赖于返回错误,而不是捕获异常。像这样的东西:

(注意:在 PHP 的早期版本中这是完全可以接受的行为。)

$tbl_nm = "table_name";

$link = @mysqli_connect($HOSTNAME, $USERNAME, $PASSWD);
if($link !== false)
{
    if(@mysqli_select_db($link, $DBNAME))
    {
        $query = "CREATE TABLE `".$tbl_nm."` (".
            $COL_ID." INT AUTO_INCREMENT PRIMARY KEY, ".
            $COL_DATE." DATE, ".
            $COL_TIME." TIME, ".
            $COL_MSG." TINYTEXT".
            ")";
            
        $res = @mysqli_query($link, $query);     //** EXCEPTION RAISED HERE! **
        if($res === false)
        {
            if(mysqli_errno($link) != 1050)    //1050 - if table already exists
            {
                logMySQLErrorReport($link, "Error creating table");
            }
        }

        //....
    }
    else
    {
        logMySQLErrorReport($link, "Error setting db");
    } …
Run Code Online (Sandbox Code Playgroud)

php mysqli php-8

-1
推荐指数
1
解决办法
589
查看次数