2015-05-18 3 views
0

Я установил XAMPP и пытался опросить мою базу данных с помощью PHP, хотя я все время получаю ту же ошибку.Вызов MySQL хранимой процедуры через PHP

<?php 
$servername = "localhost"; 
$username = "root"; 
$password = "secret"; 

// Create connection 
$conn = new mysqli($servername, $username, $password); 

// Check connection 
if ($conn->connect_error) { 
    die("Connection failed: " . $conn->connect_error); 
} 

// Perform queries 
$result = mysqli_query($conn, 
    "use edgeserver; call ShowAll") or die("Query fail: " . mysqli_error()); 

    //loop the result set 
while ($row = mysqli_fetch_array($result)){ 
    echo $row[0] . " - " . + $row[1]; 
    } 

$conn->close(); 

?> 

Однако это представляет меня со следующей ошибкой:

Warning: mysqli_error() expects exactly 1 parameter, 0 given in C:\xampp\htdocs\amit\ShowAll.php on line 16 
Query fail: 
+0

Ошибка довольно очевидна. 'mysqli_error() ожидает ровно 1 параметр ...', и это соединение. Подобно 'mysqli_error ($ conn);' Вы можете ссылаться на [здесь] (http://www.w3schools.com/php/func_mysqli_error.asp). –

ответ

1

mysql_error требует подключения к БД будет принят. Попробуйте ниже:

mysqli_error($conn); 
0

Я думаю, проблема в размере use edgeserver; call ShowAll.

use edgeserver, где edgeerver - это база данных, которую вы хотите использовать. call ShowAll - что вы пытаетесь сделать с этим?

Ваш новый MySQLi должен быть таким:

$mysqli = new mysqli('localhost', 'my_user', 'my_password', 'my_db'); 

Источник: http://php.net/manual/ro/mysqli.construct.php

И mysqli_query вы должны делать запросы, как "Select * из таблицы".

+0

С помощью ['call ShowAll'] (https://dev.mysql.com/doc/refman/5.0/en/call.html) он хочет выполнить [хранимую процедуру] (http://php.net/manual/ о/mysqli.quickstart.stored-procedures.php). Возможно, вы правильно указали базу данных в создании mysqli, а не в запросе. –

1

Спасибо, это закончилось тем, что сочетание того, что вы оба сказали:

<?php 

// Create connection 
$conn = new mysqli('localhost', 'root', 'secret', 'edgeserver'); 

// Check connection 
if ($conn->connect_error) { 
    die("Connection failed: " . $conn->connect_error); 
} 

// Perform queries 
$result = mysqli_query($conn, 
    "call ShowAll") or die("Query fail: " . mysqli_error($conn)); 

    //loop the result set 
while ($row = mysqli_fetch_array($result)){ 
    echo $row[0] . " - " . + $row[1]; 
    } 

$conn->close(); 

Великий ответ, надеюсь, это будет основой для меня разработки хорошего кода.

+0

Управление обработкой mysqli: https://php.net/manual/en/mysqli-driver.report-mode.php – hakre

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