未捕获的错误:调用未定义的函数mysql_query(),请帮助我

时间:2017-11-15 16:30:41

标签: php html mysql

当我运行我的代码时,navegator告诉我:

  

注意:使用未定义的常量数据1 - 在第8行的C:\ xampp \ htdocs \ formulario \ conexion1.php中假定为'datos1'

     

警告:mysqli_select_db()需要2个参数,1在第8行的C:\ xampp \ htdocs \ formulario \ conexion1.php中给出   没有se pudo conectar a la base de datos   注意:未定义的索引:第13行的C:\ xampp \ htdocs \ formulario \ conexion1.php中的Teachers_Name

     

注意:未定义的索引:第14行的C:\ xampp \ htdocs \ formulario \ conexion1.php中的School_Name

     

注意:未定义的变量:第15行的C:\ xampp \ htdocs \ formulario \ conexion1.php中的Implementation_Quality

     

注意:未定义的变量:第17行的C:\ xampp \ htdocs \ formulario \ conexion1.php中的Implementation_Quality

     

致命错误:未捕获错误:在C:\ xampp \ htdocs \ formulario \ conexion1.php中调用未定义函数mysql_query():19堆栈跟踪:#0 {main}抛出C:\ xampp \ htdocs \ formulario \第19行的conexion1.php

我做什么?     

if(!$conexion){
echo "Conexión no exitosa";
} else {

$base= mysqli_select_db(datos1);
    if(!$base){
        echo "No se pudo conectar a la base de datos";
    }
 }
$Teachers_Name=$_POST['Teachers_Name'];
$School_Name=$_POST['School_Name'];
$Implementation_Quality['Implementation_Quality'];

$sql= "INSERT INTO datos_1 VALUES('$Teachers_Name', 'School_Name', 
'$Implementation_Quality')";

$ejecutar = mysql_query($sql);

if(!$ejecutar){
echo "Hubo algun error";
} else {
 echo "Datos guardados correctamente<br><a href='index.html'>Volver</a>";
}
?>

1 个答案:

答案 0 :(得分:1)

替换它:

$base= mysqli_select_db(datos1);

有了这个:

$base= mysqli_select_db($conexion,'datos1');

替换这个:

$sql= "INSERT INTO datos_1 VALUES('$Teachers_Name', 'School_Name', '$Implementation_Quality')";

有了这个:

$sql= 'INSERT INTO datos_1 (col1, col2, col3) VALUES ( ?, ?, ? )';

col1col2col3替换为datos_1表格中列的名称。
例如... datos_1 (teacher_name, school_name, implementation_quality) VALUES ...

请注意,这是一个静态字符串文字。没有变量替换。问号是绑定占位符,稍后我们将参考。

替换它:

$ejecutar = mysql_query($sql);

有了这个:

$sth = mysqli_prepare($conexion,$sql);
mysqli_stmt_bind_param($sth,'sss', $Teachers_Name, $School_Name, $Implementation_Quality);
$ejecutar = mysqli_stmt_execute($sth);

不要将mysql_函数与mysqli_函数混合使用。那不会奏效。 (我们不应该在新开发中使用任何 mysql_函数; mysql_接口函数在 long 时间之前已被弃用,并最终在最新版本的PHP中删除。

不要在SQL文本中包含可能不安全的值。使用带有绑定占位符的预准备语句。 (或者不太理想,正确转义任何合并到文本中的值。)

推荐:

小鲍比表 - 对妈妈的利用https://xkcd.com/327/

OWASP SQL注入https://www.owasp.org/index.php/SQL_Injection