【问题标题】:From SQL select to PDO从 SQL 选择到 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

标签: php mysql ajax pdo


【解决方案1】:

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

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

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

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

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

现在呢?

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

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

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

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

【讨论】:

  • @SunSky 最近在 stackoverflow 上缺乏现实检查。这个答案是正确的,并逐步向您解释如何解决问题。还不够好看吗?那可能是因为这样的问题已经有数百个了。
猜你喜欢
  • 2014-03-18
  • 1970-01-01
  • 1970-01-01
  • 2018-01-03
  • 1970-01-01
  • 2021-10-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多