php
  • mysql
  • 2014-11-09 4 views -2 likes 
    -2

    PHP를 통해 mySQL 데이터베이스에 액세스하는 데 문제가 있습니다. 내가PHP가 mysql 데이터베이스에 영향을주지 않습니다.

    $sql ="UPDATE users SET adagio = 1 WHERE username='nanobots'"; 을 사용하는 문제는 내가 phpMyAdmin을 통해 데이터베이스에 입력 할 때 UPDATE users SET adagio = 1 WHERE username='nanobots' 잘 작동한다는 것입니다,하지만 난 PHP 코드를 통해 데이터베이스를 변경하려고하면, 그것은 작동하지 않습니다. 데이터베이스 사용 권한에 문제가 있습니까? 그렇다면 어떻게 변경해야합니까?

    여기에 전체 코드입니다 :

    <?php 
    
    
    $server = 'mysql.hostinger.co.uk'; 
    $user = 'u551200555_nano'; 
    $pass = '12345'; 
    $db = 'u551200555_logsy'; 
    
    
    $connection = mysql_connect($server, $user, $pass) 
    or die ("Could not connect to server ... \n" . mysql_error()); 
    mysql_select_db($db) 
    or die ("Could not connect to database ... \n" . mysql_error()); 
    
    
    $sql ="UPDATE users SET adagio = 1 WHERE username='nanobots'"; 
    
    ?> 
    
    +0

    코드가 불완전한지는 모르겠지만 실제로 데이터베이스에 쿼리를 보내는 위치가 표시되지 않습니다. 예 : mysql_query ($ sql); 그리고 BTW mysql 함수는 PHP에서 감가 상각됩니다. – Ares

    답변

    0

    mysql_ as it is deprecated을 사용하지 않아야합니다.

    mysqli_:

    define ('HOST','mysql.hostinger.co.uk'); 
    define ('USER','u551200555_nano'); 
    define ('PASS','12345'); 
    define ('DB','u551200555_logsy'); 
    
    $con = new mysqli(HOST,USER,PASS,DB); 
    if ($con->errno) { exit('No connection'.$con->error);} 
    
    mysqli_query($con,"UPDATE users SET adagio = 1 WHERE username='nanobots'"); 
    

    define 부분이 가장하지 않을 경우 웹 루트에, 여분의 파일에 있어야합니다 : 당신은 (적어도)이 당신의 코드를 다시 작성해야합니다. 쿼리 문 대신 prepared statements을 사용하는 것이 좋습니다.

    PDO:

    $pdo = new PDO('mysql:host=example.com;dbname=database', 'user', 'password'); 
    .... 
    $statement = $pdo->query($sql); 
    

    (!) 참고 :

    당신은 모든 쿼리를 실행해야합니다, 당신은 기본적으로 만 변수에 문자열을 할당했다.

    +0

    정말 고마워요! 나는 몇몇 오래된 가이드에서 php-MySQL 상호 작용을 배우고 있었지만 지금은 새로운 것들을 찾아야한다고 생각한다;) – nanobots

    5

    귀하의 코드가 데이터베이스에 SQL 문을 실행하지 않습니다. 변수를 문자열 값으로 설정하는 것입니다. ($sql 변수의 이름에는 특별한 것이 없으며, $foo 또는 무엇이든간에 가능합니다.)

    새로운 개발은 더 이상 사용되지 않는 mysql 인터페이스가 아니라 mysqli 또는 PDO 인터페이스를 사용해야합니다.

    +1

    자세한 정보 : http://php.net/manual/en/function.mysql-query.php 또는 http://php.net/manual/en/mysqli.query.php – Bluedayz

    2
    $result = mysql_query($sql); 
    

    php> 5.5로 업그레이드하면 사용중인 원래의 mysql 드라이버는 가치가 떨어지고 작동하지 않을 수 있습니다. 대신에 mysqli 또는 PDO를 사용할 수 있습니다.

    // mysqli 
    $mysqli = new mysqli("example.com", "user", "password", "database"); 
    ... 
    $result = $mysqli->query($sql); 
    
    // PDO 
    $pdo = new PDO('mysql:host=example.com;dbname=database', 'user', 'password'); 
    .... 
    $statement = $pdo->query($sql); 
    
    0

    그냥 대입 작업 일 뿐이므로 변수 $ sql에 문자열을 할당하면됩니다. 만약 당신이 그것을 PHP 쿼리 함수에 넣어 실행해야합니다. 예 : mysqli_query ($ sql); 또는 mysql_query ($ sql);

    관련 문제