从 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 选择查询中仅从时间戳中选择时间?