2013-12-01 3 views
-1

STMT не вставлять и не обновлять данныеPHP MySQLi запрос не выполнен

<?php 
if(isset($_GET['name']) and isset($_GET['herosize']) and isset($_GET['herocolor']) and isset($_GET['platform'])) 
{ 
    echo "OKAY:".$_GET['name'].",OKAY:".$_GET['herosize'].",OKAY:".$_GET['herocolor']; 
    $con = mysqli_connect("127.0.0.1","####","########","phpmyadmin"); 
    if (!$con) 
    { 
     die('Could not connect: ' . mysql_error()); 
    } 

    $queryCreateUsersTable = "CREATE TABLE IF NOT EXISTS `DGMOD` (
    `ID` int(11) unsigned NOT NULL auto_increment, 
    `USERNAME` varchar(255) NOT NULL default '', 
    `PLATFORM` varchar(255) NOT NULL default '', 
    `CONFIG` varchar(255) NOT NULL default '', 
    PRIMARY KEY (`ID`) 
)"; 
    mysqli_query($con,$queryCreateUsersTable); 


    $stmt = mysqli_prepare($con,"IF EXISTS (SELECT * FROM DGMOD WHERE USERNAME = ? AND PLATFORM = ?) 
THEN 
UPDATE DGMOD SET USERNAME = ?, PLATFORM = ?, CONFIG = ? WHERE USERNAME = ? AND PLATFORM = ? 
ELSE 
INSERT INTO DGMOD (ID,USERNAME, PLATFORM, CONFIG) VALUES('1',?,?,?)"); 
    mysqli_stmt_bind_param($con,'ssssssssss',$name1,$platform1,$name2,$platform2,$config2,$name3,$platform3,$name4,$platform4,$config4); 
    $name1=$name2=$name3=$name4=$_GET['name']; 
    $config2=$config4=$_GET['herosize']."+".$_GET['herocolor']; 
    $platform1=$platform2=$platform3=$platform4=$_GET['platform']; 
    mysqli_stmt_execute($stmt); 
    mysqli_stmt_close($stmt); 
    mysqli_close($con); 
} 
else 
{ 
    die("NO"); 
} 
?> 

Предупреждение: -

Warning: mysqli_stmt_bind_param() expects parameter 1 to be mysqli_stmt, object given in C:\Program Files\VertrigoServ\www\test.php on line 26 

Warning: mysqli_stmt_execute() expects parameter 1 to be mysqli_stmt, boolean given in C:\Program Files\VertrigoServ\www\test.php on line 30 

Warning: mysqli_stmt_close() expects parameter 1 to be mysqli_stmt, boolean given in C:\Program Files\VertrigoServ\www\test.php on line 31 
+1

В вашем коде есть разница между '$ con' и' $ stmt'. Вы используете '$ con', где вы должны использовать' $ stmt'. – arkascha

+0

Посмотрите на синтаксис http://php.net/manual/en/mysqli-stmt.bind-param.php – Kevin

ответ

0

Первый параметр mysqli_stmt_bind_param потребности быть mysqli_stmt, вы передаете в mysqli типа, следовательно, первая ошибка.

Заменить строку:

mysqli_stmt_bind_param($con,'ssssssssss',$name1,$platform1,$name2,$platform2,$config2,$name3,$platform3,$name4,$platform4,$config4); 

с:

mysqli_stmt_bind_param($stmt,'ssssssssss',$name1,$platform1,$name2,$platform2,$config2,$name3,$platform3,$name4,$platform4,$config4); 

Это будет решать все три предупреждения.

0

Может быть, есть ошибка здесь:

mysqli_stmt_bind_param($con,...

это должно быть:

mysqli_stmt_bind_param($stmt,...

Смежные вопросы