小编You*_*nse的帖子

如何在PHP脚本中正确构造SQL查询?

我正在尝试创建一个SQL查询以将用户信息插入到数据库中.在$fname$lname变量包含正确的值("约翰"和"李四"),但查询失败.这是我的代码:

$fname = $_POST['first_name'];
$lname = $_POST['last_name'];  
$sql = "INSERT INTO users (fname, lname) VALUES ($fname, $lname)";
mysqli_query($conn, $sql);
Run Code Online (Sandbox Code Playgroud)

检查错误消息后,我发现此查询失败并显示错误消息

"字段列表"中的未知列"John"

如何正确地将变量包含到SQL查询中以使其在没有错误的情况下运行?

  • 这个问题不是我熟悉的SQL语法,而是关于使用PHP脚本中的变量动态创建查询的规则.
  • 我不想要一个只能消除即时错误的快速补丁,而是一个无错误且安全的最先进解决方案.

php sql

9
推荐指数
1
解决办法
1451
查看次数

PDO参数化查询的工作方式

请仔细阅读问题.这通常不是愚蠢的"我的代码不起作用!!!" 题.

当我使用预期的错误运行此代码时

try {
  $sth = $dbh->prepare("SELECT id FROM users WHERE name INN(?,?) ");
  $sth->execute(array("I'm","d'Artagnan"));
} catch (PDOException $e) {
    echo $e->getMessage();
}
Run Code Online (Sandbox Code Playgroud)

我收到此错误消息

您的SQL语法中有错误...在第1行'INN('我'','d \'Artagnan')'附近

但我多年来一直认为查询和数据是分开发送给服务器的,而且绝不干涉.因此我有一些问题(虽然我怀疑有人得到答案......)

  1. 它在哪里获得如此熟悉的字符串表示 - 引用和转义?它是否特别报告错误或是否是实际查询的一部分?
  2. 它是如何在真实中起作用的?它是否用占位符代替数据?
  3. 有没有办法获得整个查询,而不仅仅是一点点,用于调试目的?

更新

mysqli 是按预期做的:它会抛出一个错误说 near 'INN(?,?)'

php pdo parameterized-query

8
推荐指数
2
解决办法
780
查看次数

在C#ASP.NET中获取发布值

我有一个动态表单,允许动态添加许多字段,

我知道如何使用以下方法获取aspnet中单个字段的值:Request.Form ["myField"],但是这里我有更多字段,我不知道这些字段的数量,因为这些是动态的

字段名称是"orders []"

例如:

<form>
<input type="text" name="orders[]" value="order1" />
<input type="text" name="orders[]" value="order2" />
<input type="text" name="orders[]" value="order3" />
</form>
Run Code Online (Sandbox Code Playgroud)

在php中,我通过访问获取值作为数组$_POST['orders'];

例如:

$orders = $_POST['orders'];
foreach($orders as $order){
 //execute ...
}
Run Code Online (Sandbox Code Playgroud)

我怎样才能在c#中做到这一点?

c# asp.net post http

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

mysqli_select_db()期望参数1为mysqli,给定字符串

可能重复:
mysql_fetch_array()期望参数1是资源,在select中给出boolean

我是Mysqli_*的新手,我收到了这些错误:

警告:mysqli_select_db()期望参数1为mysqli,字符串在第11行的D:\ Hosting\9864230\html\includes\connection.php中给出

警告:mysqli_error()期望在第13行的D:\ Hosting\9864230\html\includes\connection.php中给出1个参数0

数据库选择失败:

<?php
require("constants.php");

// 1. Create a database connection
$connection = mysqli_connect(DB_SERVER,DB_USER,DB_PASS);
if (!$connection) {
    die("Database connection failed: " . mysqli_error());
}

// 2. Select a database to use 
$db_select = mysqli_select_db(DB_NAME,$connection);
if (!$db_select) {
    die("Database selection failed: " . mysqli_error());
}
?>
Run Code Online (Sandbox Code Playgroud)

php mysqli

8
推荐指数
2
解决办法
19万
查看次数

由于缺少PHP扩展,CakePHP 3无法连接到数据库

我正在尝试使用WT-NMP安装cakePHP 3.0.0,但我收到此消息:

CakePHP无法连接到数据库.

由于缺少PHP扩展或未满足的依赖性,无法使用数据库驱动程序Cake\Database\Driver\Mysql

我的php.ini有这个:

extension = php_bz2.dll
extension = php_curl.dll
extension = php_gd2.dll
extension = php_imap.dll
extension = php_mbstring.dll
extension = php_exif.dll
extension = php_mysql.dll
extension = php_mysqli.dll
extension = php_pdo_mysql.dll
extension = php_pdo.dll
extension = php_soap.dll
extension = php_sockets.dll
extension = php_sqlite3.dll
extension = php_openssl.dll
extension = php_fileinfo.dll
extension = php_intl.dll
Run Code Online (Sandbox Code Playgroud)

app.php有这个

    'default' => [
        'className' => 'Cake\Database\Connection',
        'driver' => 'Cake\Database\Driver\Mysql',
        'persistent' => false,
        'host' => 'localhost',
        /**
         * CakePHP will use the default DB port based on …
Run Code Online (Sandbox Code Playgroud)

mysql cakephp

8
推荐指数
4
解决办法
2万
查看次数

获取同一查询中的下一条和上一条记录

我正在使用此PDO查询从MySQL调用数据.

$sql = "SELECT itemName FROM furniture WHERE itemID = :item";
Run Code Online (Sandbox Code Playgroud)

在调用此特定itemName时,是否可以通过在同一查询中使用其itemID来获取下一个和上一个itemNames,而无需编写新查询来获取下一个和上一个itemNames?

例如,如果

itemID   |   itemName
___________________________
553      |   Mahogani Black Chair
554      |   Teak Round Table
555      |   Thulang Relaxing Chair
556      |   Teak Relaxing Chair

$sql = "SELECT itemName FROM furniture WHERE itemID = :item";
$stmt = $connect->prepare($sql);
$stmt->execute(array(':item'=>"554"));
$rslt = $stmt->fetchAll(PDO::FETCH_ASSOC);
Run Code Online (Sandbox Code Playgroud)

我正在寻找Teak Round TableMahogani Black ChairThulang Relaxing Chair

php mysql

8
推荐指数
1
解决办法
129
查看次数

MySQL插入非PRIMARY键的重复更新

我对重复更新查询中的插入很困惑.我有MySQL表,结构如下:

  • record_id(PRIMARY,UNIQUE)
  • person_id(UNIQUE)
  • SOME_TEXT
  • some_other_text

如果我的table.person中存在id,或者在此表中插入新记录,我想为person更新some_text和some_other_text值.如果person_id不是PRIMARY,怎么办呢?

mysql

8
推荐指数
3
解决办法
2万
查看次数

PHP产量与PDO获取?

昨天,我了解到PHP有一种yield()方法.我不确定它在PHP中的用处.

一位同事表示,它可以帮助SQL语句返回许多行,从而导致潜在的内存问题.我相信他在提到fetchAll().但是,除了使用之外fetchAll(),还可以逐个使用fetch()和处理行.因此,yield()解决他所指的问题并不是关键.

我在这里错过了一些关于yield()vs的事fetch()吗?使用yield()和生成器有更多好处吗?

PS:在大型应用程序中编写干净,可读和可维护的代码yield()比使用它更容易fetch().

php mysqli pdo yield fetch

8
推荐指数
1
解决办法
2848
查看次数

测试php/mysqli连接

我正在寻找一种方法来测试php/mysqli连接的连接部分.我正在从Vista上的LAMP服务器迁移到Ubuntu上的相同,并且正在使mysqli工作.我知道所有正确的模块都已安装,PhpMyAdmin可以完美运行.我已经迁移了一个站点,并没有mysqli连接正常工作.我得到的错误是"在非对象上调用成员函数xxx()",当查询本身错误或查询是从错误的连接准备时,通常会弹出.我知道查询本身是好的,因为它在具有完全相同的数据库结构和数据的其他服务器上工作正常.这让我有了联系.我试着编写一个非常简单的测试连接并将其放在一个循环中,例如..

if(***connection here ***)
{ echo "connected"; }
else
{ echo "not connected"; }
Run Code Online (Sandbox Code Playgroud)

它呼应"连接",这很棒.但只是为了检查我在连接中更改了密码,以便我知道它无法连接,它仍然回显"已连接".所以,if/else测试显然不是要走的路....

php ubuntu mysqli

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

强制首先更新然后在过程中选择

我在MySQL中有这个程序(不用费心去弄清楚它的作用,只需看看光标打开的部分)

/* PROCEDURE 1 : Post notification */
DROP PROCEDURE IF EXISTS AddNotificationOnPosts;

DELIMITER $$
CREATE DEFINER=`root`@`localhost` PROCEDURE `AddNotificationOnPosts`(arg_from_user INT(11),arg_on_post_id INT(11),arg_in_group_id INT(11))
BEGIN
    DECLARE num_rows INT DEFAULT NULL;
    DECLARE insert_result INT DEFAULT NULL;

    DECLARE done INT DEFAULT 0;
    DECLARE var_user_id INT DEFAULT NULL;
        DECLARE c1 CURSOR FOR 
        SELECT user_id 
        FROM user_rights 
        WHERE user_rights.right = 101 AND user_rights.group_id  = arg_in_group_id 
        ORDER BY user_id DESC;
    DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;

    IF(arg_from_user IS NULL OR arg_from_user = '') …
Run Code Online (Sandbox Code Playgroud)

mysql sql

7
推荐指数
1
解决办法
332
查看次数

标签 统计

php ×6

mysql ×4

mysqli ×3

pdo ×2

sql ×2

asp.net ×1

c# ×1

cakephp ×1

fetch ×1

http ×1

parameterized-query ×1

post ×1

ubuntu ×1

yield ×1