2014-04-06 3 views
0

Следующий PHP-код предназначен для удаления таблицы, если она существует, создать таблицу, использовать таблицу, а затем вставить строку в таблицу.Вставка строки в таблицу с использованием PHP MYSQL

Все работает отдельно от вставки. Я новичок в PHP и MYSQL, и я пробовал много перестановок разных типов кавычек (синглов, парных, одно: `), но не могу получить данные, которые нужно вставить в таблицу.

Может кто-нибудь пролить свет на то, что не так с этим?

$retval = mysqli_query($conn,'INSERT INTO `performance` (manager, program, programid, yearmonth, performance) VALUES ("manager1", "program1","programid1", "199901", "-3.4")'); 

РНР скрипт ниже дает результат:

Connected успешно

Таблица успешно отброшен.

DB б/у успешно.

Таблица создана успешно.

Не удалось вставить данные.

Так что все отработало от вставки.

$conn = mysql_connect($dbhost, $dbuser, $dbpass); 
if(! $conn) 
{ 
    die('Could not connect: ' . mysql_error()); 
} 
echo 'Connected successfully<br />'; 

$retval = mysql_query('DROP TABLE IF EXISTS `managedfutures`.`performance`') or die(mysql_error()); 
if(! $retval) 
{ 
    die('Could not drop table ' . mysql_error()); 
} 
echo "Table dropped successfully."; 
echo "<br>"; 

$retval = mysql_query("USE managedfutures", $conn); 
if(! $retval) 
{ 
    die('Could not use DB' . mysql_error()); 
} 
echo "DB used successfully."; 
echo "<br>"; 


$sql = "CREATE TABLE performance(". 
     "performance_id INT NOT NULL AUTO_INCREMENT, ". 
     "manager VARCHAR(255) NOT NULL, ". 
     "program VARCHAR(255) NOT NULL, ". 
     "programid VARCHAR(255) NOT NULL, ". 
     "yearmonth VARCHAR(6) NOT NULL, ". 
     "performance FLOAT NOT NULL, ". 
     "PRIMARY KEY (performance_id)); "; 

$retval = mysql_query($sql, $conn); 
if(! $retval) 
{ 
    die('Could not create table: ' . mysql_error()); 
} 
echo "Table created successfully."; 
echo "<br>"; 

$retval = mysqli_query($conn,'INSERT INTO `performance` (manager, program, programid, yearmonth, performance) VALUES ("manager1", "program1","programid1", "199901", "-3.4")'); 
if(! $retval) 
{ 
    die('Could not insert data. ' . mysql_error()); 
} 
echo "Data inserted successfully."; 
echo "<br>"; 

return; 

Благодаря Mike W, указав, что у меня были смешанные команды mysql и mysqli! Я новичок в php/mysql и не понимаю, что между ними существует разница. Также была другая ошибка, я вводил число в виде строки в инструкции insert. То есть Я написал «-3.4» вместо -3.4.

Для полноты, это фиксированная версия, которая работает.

$mysqli = new mysqli($dbhost, $dbuser, $dbpass, $dbname); 
if ($mysqli->connect_errno) { 
    die("Failed to connect to MySQL: " . $mysqli->connect_error); 
} 
echo 'Connected successfully<br />'; 

$retval = mysqli_query($mysqli,"DROP TABLE IF EXISTS `performance`"); 
if(! $retval) 
{ 
    die('Could not drop table ' . $mysqli->query_error); 
} 
echo "Table dropped successfully."; 
echo "<br>"; 

$sql = "CREATE TABLE performance(". 
     "performance_id INT NOT NULL AUTO_INCREMENT, ". 
     "manager VARCHAR(255) NOT NULL, ". 
     "program VARCHAR(255) NOT NULL, ". 
     "programid VARCHAR(255) NOT NULL, ". 
     "yearmonth VARCHAR(6) NOT NULL, ". 
     "performance FLOAT NOT NULL, ". 
     "PRIMARY KEY (performance_id)); "; 

$retval = mysqli_query($mysqli, $sql); 
if(! $retval) 
{ 
    die('Could not create table: ' . $mysqli->query_error); 
} 
echo "Table created successfully."; 
echo "<br>"; 

$retval = mysqli_query($mysqli, "INSERT INTO `performance` (`manager`, `program`,`programid`, `yearmonth`, `performance`) VALUES ('manager1', 'program1','programid1', '199901', -3.4)"); 
if(! $retval) 
{ 
    die('Could not insert data. ' . $mysqli->query_error); 
} 
echo "Data inserted successfully."; 
echo "<br>"; 

return; 
+1

, задавая вопрос, если шесть вещей работать и один не просто разместить код для сломавшегося, благодаря –

+0

Просто запустите запрос отдельно в PhpMyAdmin и проверьте, работает ли ваш запрос. –

+0

@Dagon хорошо на самом деле кажется, что я допустил ошибку при смешивании mysql и mysqli, о которых я не знал, были такие разные вещи, и если бы я не разместил все вещи, то никто бы не смог указать это, а затем неизбежно кто-то попросит меня опубликовать более полный пример с более подробными сведениями о том, что я делаю. Я думаю, это идет показать: вы не можете угодить всем людям все время! –

ответ

3

Вы смешивания mysql_*() и mysqli_*() вызовов. Они разные и не могут использоваться вместе. mysql_*() устаревший - использовать только mysqli_*().

1

Вы использовали mysql_query на протяжении всего кода

$retval = mysql_query($sql, $conn); //**You have used mysql_query** 
if(! $retval) 
{ 
    die('Could not create table: ' . mysql_error()); 
} 
echo "Table created successfully."; 
echo "<br>"; 

Вдруг mysqli_query видно (МАГИЯ !!!).

$retval = mysqli_query($conn,'INSERT INTO `performance` (manager, program, programid, yearmonth, performance) VALUES ("manager1", "program1","programid1", "199901", "-3.4")'); 
      ^^ 
     // SUDDENLY you see mysqli_query 
+0

Я смеюсь над твоей «нотацией» ** МАГИЯ !!! **. –

+0

:) ... Хорошо чувствует себя прекрасно, что это заставило вас рассмеяться ... Как насчет того, чтобы дать ему голосование ...;) – Vagabond

+0

Голос в первую очередь предназначен для развлечений. –

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