PDO相当于带有警报的mysql_num_rows

时间:2017-06-21 13:31:22

标签: php pdo

我有这段代码:

$pegaDados = mysql_query("SELECT * FROM curso WHERE cpf='$cpf'");

        if(mysql_num_rows($pegaDados) > 0){
          echo '<script type="text/javascript">alert("CPF já cadastrado em nosso Banco de Dados!");</script>';
        }
        else{

我想在PDO上进行转换,但我遇到了问题。任何人都可以帮助我吗?

我正在寻找网络上的解决方案,我没有找到它的“最佳”解决方案。查看我的下面的连接文件:

    <?php

define( 'MYSQL_HOST', '???' );
define( 'MYSQL_USER', '???' );
define( 'MYSQL_PASSWORD', '???' );
define( 'MYSQL_DB_NAME', '???' );

try
{
 $PDO = new PDO( 'mysql:host=' . MYSQL_HOST . ';dbname=' . MYSQL_DB_NAME, MYSQL_USER, MYSQL_PASSWORD, array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8'));
}

catch ( PDOException $e )
{
 echo 'Erro ao conectar com o MySQL: ' . $e->getMessage();
}

?>

3 个答案:

答案 0 :(得分:1)

某些带PDO的数据库驱动程序没有自然行计数功能(rowCount() is only for INSERT, UPDATE or DELETE queries),因此您必须使用其他方法。这是我使用的(编辑:基于OP信息的更新连接)

$sql = 'select * from table';
$data = $PDO->query($sql);
$rows = $data->fetchAll();
$num_rows = count($rows);

然后你可以测试:

if($num_rows > 0){
    // your code here
}

编辑根据OP的新信息更新了代码:

$sql = "SELECT * FROM curso WHERE cpf = :cpf"; 
$stmt = $PDO->prepare( $sql ); 
$stmt->bindParam( ':cpf', $cpf ); 
$result = $stmt->execute(); 
$rows = $result->fetchAll(); 
$num_rows = count($rows);

答案 1 :(得分:-1)

我刚刚将:cpf变量更改为$cpf,并且有效!

<?php

require '../conexao.php';

$nome               =           addslashes ($_POST['nome']);
$foto               =           addslashes ($_POST['foto']);
$cpf                =           addslashes ($_POST['cpf']);
$rg                 =           addslashes ($_POST['rg']);
$email              =           addslashes ($_POST['email']);
$telefone           =           addslashes ($_POST['telefone']);
$endereco           =           addslashes ($_POST['endereco']);
$bairro             =           addslashes ($_POST['bairro']);
$cidade             =           addslashes ($_POST['cidade']);
$estado             =           addslashes ($_POST['estado']);
$observacoes        =           addslashes ($_POST['observacoes']);
$curso              =           addslashes ($_POST['curso']);

$newquery = "SELECT * FROM curso WHERE cpf = $cpf";

$data = $PDO->query($newquery);
$rows = $data->fetchAll();
$num_rows = count($rows);

if($num_rows > 0){
    echo '<script type="text/javascript">alert("CPF já cadastrado em nossa base de dados!");</script>';
}

else{

$sql = "INSERT INTO curso SET foto = :foto, nome = :nome, email = :email, cpf = :cpf, rg = :rg, telefone = :telefone, endereco = :endereco, bairro = :bairro, cidade = :cidade, estado = :estado, observacoes = :observacoes, curso = :curso";

$stmt = $PDO->prepare( $sql );
$stmt->bindParam( ':foto', $foto );
$stmt->bindParam( ':nome', $nome );
$stmt->bindParam( ':email', $email );
$stmt->bindParam( ':cpf', $cpf );
$stmt->bindParam( ':rg', $rg );    
$stmt->bindParam( ':telefone', $telefone );
$stmt->bindParam( ':endereco', $endereco );
$stmt->bindParam( ':bairro', $bairro );
$stmt->bindParam( ':cidade', $cidade );
$stmt->bindParam( ':estado', $estado );
$stmt->bindParam( ':observacoes', $observacoes );
$stmt->bindParam( ':curso', $curso );
$result = $stmt->execute();

echo '<script type="text/javascript">alert("Matrícula realizada com sucesso!");</script>';
echo "<script>window.location = 'https://pag.ae/bck57zw';</script>";

}

&GT;

答案 2 :(得分:-2)

你应该尝试这个

$sql = "SELECT * FROM curso WHERE cpf='$cpf'";
$pegaDados = $con->prepare($sql);
$pegaDados->execute();
if($pegaDados->rowCount() > 0){
    echo '<script type="text/javascript">alert("CPF já cadastrado em nosso Banco de Dados!");</script>';
}

$ con是您的数据库连接。