2014-11-17 3 views
-2

으로 주어진다. 내 갤러리를 위해 투표 시스템을 만들고있다. 그리고 나는이 오류가 발생합니다 : mysql_num_rows() 매개 변수 1 리소스, 부울 주어진 것으로 기대하고있다. 거기에 중복 답변을 많이 볼 수 있습니다. 어쩌면 모든 코드에서 눈이 멀어졌지만 오류를 찾을 수 없습니다.mysql_num_rows()는 매개 변수 1이 리소스가 될 것으로 예상하고, 부울은

<?php 
    $ip = $_SERVER['REMOTE_ADDR']; 

    if($_POST['id']) 
    { 
    $id = $_POST['id']; 
    $id = mysql_escape_String($id); 

     $ip_sql = mysql_query("SELECT ip_add FROM voting_ip WHERE id_fk='$id' AND ip_add='$ip'"); 
    $count = mysql_num_rows($ip_sql); 

    if($count==0) 
    { 
// Update 
    $sql = "UPDATE votes SET up=up+1 WHERE id='$id'"; 
mysql_query($sql); 
    // Insert IP address and Message Id in Voting_IP table. 
    $sql_in = "INSERT INTO voting_ip (id_fk,ip_add) VALUES ('$id','$ip')"; 
    mysql_query($sql_in); 
    echo "<script>alert('Thanks for the vote');</script>"; 
    } 
    else 
    { 
    echo "<script>alert('You have already voted');</script>"; 
    } 

$result = mysql_query("SELECT up FROM votes WHERE id='$id'"); 
$row = mysql_fetch_array($result); 
$up_value=$row['up']; 
echo $up_value; 

    } 
    ?> 

새로운 코드 :

<?php 

    include ('config/connection.php'); 

    $ip = $_SERVER['REMOTE_ADDR']; 

    if($_POST['id']) 
    { 
    $id = $_POST['id']; 
    $id = mysqli_real_escape_String($id); 
    //Verify IP address in Voting_IP table 
    $q = "SELECT ip_add FROM voting_ip WHERE id_fk='$id' AND ip_add='$ip'"; 
    $r = mysqli_query($dbc, $q); 
    $count = mysqli_num_rows($q); 

    if($count==0) 
    { 
    // Update Vote. 
    $sql = "UPDATE votes SET up=up+1 WHERE id='$id'"; 
    // Insert IP address and Message Id in Voting_IP table. 
    $sql_in = "INSERT INTO voting_ip (id_fk,ip_add) VALUES ('$id','$ip')"; 
    echo "<script>alert('Thanks for the vote');</script>"; 
    } 
    else 
    { 
    echo "<script>alert('You have already voted');</script>"; 
    } 

    $result = "SELECT up FROM votes WHERE id='$id'"; 
    $row = mysqli_result($result); 
    $up_value=$row['up']; 
    echo $up_value; 

    } 
?> 

오류 :

  1. mysqli_real_escape_string는() 기대 정확히에 주어진 2 개 매개 변수 1 : $ ID = mysqli_real_escape_String ($ 아이디);

  2. : mysqli_num_rows()는 매개 변수 1이 mysqli_result가되도록 예상합니다. $ count = mysqli_num_rows ($ q); 정의되지 않은 함수에 mysqli_result

3 :() 호출 : $ 행 = mysqli_result ($ 결과);

$con = mysql_connect(DATABASE, USERNAME, PASSWORD, TABLE); 

및 조회를 할 때마다 다음이 연결을 전달합니다

+0

(http://stackoverflow.com/questions/12859942/why-shouldnt-i-use ['mysql_로 *'기능을 사용하지 마십시오] 바랍니다 * mysqli_ 호출 변경 -mysql-functions-in-php), 더 이상 유지 관리되지 않으며 공식적으로 사용되지 않습니다 (https://wiki.php.net/rfc/mysql_deprecation). 대신 [prepared statements] (http://en.wikipedia.org/wiki/Prepared_statement)에 대해 알아보고 [PDO] (http://us1.php.net/pdo) 또는 [MySQLi] (http : //)를 사용하십시오. us1.php.net/mysqli). [SQL 주입 방지!] (http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php) –

+0

mysql_query는 SQL을 필요로하지 않으며 연결 var? oO –

+0

MySQL 서버에 대한 연결은 어디입니까? –

답변

0

당신은 먼저 데이터베이스에 대한 연결을 만들어야과 같이 사용하여이 mysql_connect()을한다.

또한 함수의 모든

+0

OP가 mysql_을 사용하고 있습니다. –

+0

더 나은 것이지만 지금은 변경 되었기 때문에 mysqli가 사용되었습니다 – DrRoach

+2

나는 mysqli에 대해 이해하고 동의합니다. 그러나, mysqli는 prepared statement를 사용하지 않는다면 mysql_만큼 안전하다. –

관련 문제