从 SQL 选择到 PDO

Posted

技术标签:

【中文标题】从 SQL 选择到 PDO【英文标题】:From SQL select to PDO 【发布时间】:2013-09-08 03:28:54 【问题描述】:

我之前的 SQL SELECT 代码处理了这个 AJAX 请求,但我想将它转换为 PDO 语句。

javascript

$.ajax(  
    type: "POST",  
    url: "ajax.php",  
    data: "mail="+ mail,  
    success: function(msg)  
    if(msg == 'mail already in use')
    ....  

ajax.php

$dsn = "mysql:host=localhost;dbname=vedic;charset=utf8";
$opt = array(
    PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION,
    PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
);
$pdo = new PDO($dsn,'root','', $opt);

if(isset($_POST['mail']))
$mail = $_POST['mail'];

$stm = $pdo->prepare("select id from members where email='$mail'");
$stm->execute(array($id));
$name = $stm->fetchColumn();

现在呢?如何获得可以在 AJAX 中使用的结果?

【问题讨论】:

你从 ajax.php 得到的当前输出是什么? 您了解过参数化查询的工作原理吗? This is an excellent tutorial。您需要使用?:mail 占位符而不是$mail$id 是什么?你还没有定义它——可能你打算在那里使用$mail 【参考方案1】:

您应该理解您正在阅读的内容,而不仅仅是复制粘贴。 看看你读了什么:

使用准备好的语句是使用 PDO 的主要原因。每个动态数据文字都必须在查询中用名称 (:name) 或常规占位符 (?) 表示。

但是你做了什么?将您的数据直接插入到查询中:

$stm = $pdo->prepare("select id from members where email='$mail'");

为什么不使用占位符制作这段代码?

现在呢?

修复您的代码,使其合理且有效。

如何获得可以在 ajax 中使用的结果?

您发布的代码已经应该采用所需的值,您可以在任何您希望的地方使用它。

请花一点时间研究这段代码,玩弄它,让自己熟悉它。请记住,本网站不是免费的编码服务。答案中的代码不一定必须开箱即用。一个应该给你一个想法的答案,而不是做你的工作。

【讨论】:

@SunSky 最近在 *** 上缺乏现实检查。这个答案是正确的,并逐步向您解释如何解决问题。还不够好看吗?那可能是因为这样的问题已经有数百个了。

以上是关于从 SQL 选择到 PDO的主要内容,如果未能解决你的问题,请参考以下文章

如何在 mysql PDO 选择查询中仅从时间戳中选择时间?

使用默认模式-PDO::ERRMODE_SILENT

PDO::FETCH_CLASSTYPE - 意外结果

使用 PDO 选择 MYSQL 中的 PHP 变量 [重复]

sql pdo php 在变量中的位置

PDO从先前选择插入的绑定参数